tomcat中的redis、activemq、activemq數據庫調優的使用

1.下載安裝包redis-3.2.2.tar.gz,並且進行解壓,解壓後編譯源碼


[root@localhost soft]# tar  -zxvf redis-3.2.2.tar.gz 

[root@localhost soft]# cd redis-3.2.2

[root@localhost redis-3.2.2]# make

編譯完成後提示

make[1]: Leaving directory `/soft/redis-3.2.2/src'

2.編譯完成後,在src目錄下有四個可執行文件redis-server、

[root@localhost redis-3.2.2]# mkdir /usr/local/redis

[root@localhost redis-3.2.2]# cp redis.conf /usr/local/redis/

[root@localhost redis-3.2.2]# cd src/

[root@localhost src]# cp redis-server /usr/local/redis/

[root@localhost src]# cp redis-benchmark /usr/local/redis/

[root@localhost src]# cp redis-cli /usr/local/redis/

[root@localhost src]# cd /usr/local/redis/

[root@localhost redis]# ls

redis-benchmark   #redis性能測試工具

redis-cli         #redis命令行操作工具

redis.conf        redis配置文件

redis-server      #服務器的daemon啓動程序


3.修改配置文件

[root@localhost redis]# vi redis.conf 

61 #bind 127.0.0.1      註釋這一行,默認是指至運行自己訪問自己

128 daemonize yes       默認爲no,改爲yes,默認是不能以守護進程運行

480 requirepass 123456  默認是沒有開啓redis的密碼,設置redis的密碼爲123456


4.redis啓動服務

/usr/local/redis/redis-server /usr/local/redis/redis.conf    配置文件已經改寫爲守護進程的方式 

[root@fanxiaohui redis]# ps -elf | grep redis

5 S root       6524      1  0  80   0 - 33383 ep_pol 00:06 ?        00:00:00 /usr/local/redis/redis-server *:6379                     

0 S root       6528   3187  0  80   0 - 25814 pipe_w 00:06 pts/1    00:00:00 grep redis


5.客戶端測試一下是否啓動成功,開啓認證功能後redis測試方法必須指定服務器IP地址、端口和密碼

[root@fanxiaohui redis]# redis-cli -h 127.0.0.1 -p 6379 -a 123456

127.0.0.1:6379> set foo bar

OK

127.0.0.1:6379> get foo

"bar"

127.0.0.1:6379> 

可以看到取的值說明成功。


activemq Linux中的部署和安裝


1.下載安裝包apache-activemq-5.14.1-bin.tar.gz,並且進行解壓,解壓後編譯源碼

[root@fanxiaohui soft]# tar -zxvf apache-activemq-5.14.1-bin.tar.gz 

[root@fanxiaohui soft]# mv apache-activemq-5.14.1 /usr/local/apache-activemq

[root@fanxiaohui soft]# cd /usr/local/apache-activemq/bin/

2.啓動activemq服務

/usr/local/activemq/bin/activemq start


3.查看端口是否有運行程序

[root@localhost bin]# netstat -anpult | grep 61616

tcp        0      0 :::61616                    :::*                        LISTEN

  3576/java


4.完成後添加開啓自啓動


[root@localhost bin]# cat /etc/rc.local 

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.



touch /var/lock/subsys/local

/usr/local/activemq/bin/activemq start


5.apache-activemq調優配置 

持久化

ActiveMQ支持持久化,可以將接收到的消息保存到數據庫中,就算ActiveMQ重啓,也照樣能將尚未派發的消息發送出去。

    ActiveMQ的持久化機制,對於Queue類型的消息,將存儲在Broker,但是一旦其中一個消費者完成消費,則立即刪除這條消息。

對於Topic類型的消息,即使所有的訂閱者都完成了消費,Broker也不一定會馬上刪除無用消息,而是保留推送歷史,之後會異步清除無用消息。

而每個訂閱者消費到了哪條消息的offset會記錄在Broker,以免下次重複消費。因爲消息是順序消費,先進先出,所以只需要記錄上次消息消費到哪裏就可以了。

配置持久化的方式,都是修改%ACTIVEMQ_HOME%conf/acticvemq.xml文件。


1。持久化爲文件

這個你裝ActiveMQ時默認就是這種,只要你設置消息爲持久化就可以了。涉及到的配置和代碼有

 <persistenceAdapter>

            <kahaDB directory="${activemq.data}/kahadb"/>

        </persistenceAdapter>

2.持久化 爲 mysql

[root@fanxiaohui lib]# cd /usr/local/apache-activemq/lib

[root@fanxiaohui soft]# mv  mysql-connector-java-5.1.34.jar /usr/local/apache-activemq/lib/

 你首先需要把MySql的驅動放到ActiveMQ的Lib目錄下,如mysql-connector-Java-5.1.34.jar。

[root@fanxiaohui soft]# cd /usr/local/apache-activemq/conf/

[root@fanxiaohui conf]# vi activemq.xml

     85        <persistenceAdapter>

     86                  <jdbcPersistenceAdapter dataSource="#mysql-ds" dataDirectory="${activemq.base}/data" createTablesOnStartup="true" useDatabaseLock="false" />

     87                  </persistenceAdapter>

...............................

...............................

    133           <bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">

    134                         <property name="driverClassName" value="com.mysql.jdbc.Driver"/>       #使用的JDBC驅動的完整有效的java 類名

    135                         <property name="url" value="jdbc:mysql://192.168.23.240:3306/activemqdb?relaxAutoC        ommit=true"/>  #傳遞給JDBC驅動的用於建立連接的URL

    136                         <property name="username" value="activemq"/>    # 傳遞給JDBC驅動的用於建立連接的用戶名

    137                         <property name="password" value="activemq.123"/> #傳遞給JDBC驅動的用於建立連接的密碼

    138                         <property name="poolPreparedStatements" value="true"/> #開啓池的prepared statement 池功能

    139                         <property name="maxTotal" value="150"/>  # 最大活動連接:連接池在同一時間能夠分配的最大活動連接的數量, 如果設置爲非正數則表示不限制 

    140                         <property name="minIdle" value="5"/>     #最大空閒連接:連接池中容許保持空閒狀態的最大連接數量,超過的空閒連接將被釋放,如果設置爲負數表示不限制

    141                         <property name="maxIdle" value="20"/>    #小空閒連接:連接池中容許保持空閒狀態的最小連接數量,負數表示沒有現在

    142                         <property name="initialSize" value="30"/>  #初始化連接:連接池啓動時創建的初始化連接數量

    143                         <property name="maxWaitMillis" value="1000"/>  #最大等待時間:當沒有可用連接時,連接池等待連接被歸還的最大時間(以毫秒計數),超過時間則拋出異常,如果設置爲-1表示無限等待

    144                         <property name="timeBetweenEvictionRunsMillis" value="10000"/>  #在空閒連接回收器線程運行期間休眠的時間值,以毫秒爲單位.如果設置爲非正數,則不運行空閒連接回收器線程

    145                         <property name="numTestsPerEvictionRun" value="10"/>  #在每次空閒連接回收器線程(如果有)運行時檢查的連接數量

    146                         <property name="minEvictableIdleTimeMillis" value="10000"/>   #連接在池中保持空閒而不被空閒連接回收器線程(如果有)回收的最小時間值,單位毫秒

    147                         <property name="validationQuery" value="SELECT NOW() FROM DUAL"/> #SQL查詢,用來驗證從連接池取出的連接,在將連接返回給調用者之前.如果指定,則查詢必須是一個SQL SELECT並且必須返回至少一行記錄

    148             </bean>


從配置中可以看出數據庫的名稱是activemq,密碼爲:activemq.123 你需要手動在MySql中增加這個庫。

mysql>

mysql>create database activemqdb;

mysql>grant all on activemqdb.* to "activemq"@"%" identified by "activemq.123";


數據庫配置好後才能啓動activemq服務


[root@fanxiaohui conf]# /usr/local/apache-activemq/bin/activemq start

INFO: Loading '/usr/local/apache-activemq//bin/env'

INFO: Using java '/usr/java/bin/java'

INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details

INFO: pidfile created : '/usr/local/apache-activemq//data/activemq.pid' (pid '4123')

[root@fanxiaohui conf]#  ps -elf | grep  activemq

0 S root       4123      1 40  80   0 - 768127 futex_ 02:03 pts/0   00:00:04 /usr/java/bin/java -Xms64M -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/usr/local/apache-activemq//conf/login.config -Dcom.sun.management.jmxremote -Djava.awt.headless=true -Djava.io.tmpdir=/usr/local/apache-activemq//tmp -Dactivemq.classpath=/usr/local/apache-activemq//conf:/usr/local/apache-activemq//../lib/: -Dactivemq.home=/usr/local/apache-activemq/ -Dactivemq.base=/usr/local/apache-activemq/ -Dactivemq.conf=/usr/local/apache-activemq//conf -Dactivemq.data=/usr/local/apache-activemq//data -jar /usr/local/apache-activemq//bin/activemq.jar start


再次查看數據庫時出現三張表

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| activemqdb         |

| data               |

| fanxiaohui         |

| mysql              |

| performance_schema |

| sys                |

| test               |

+--------------------+

8 rows in set (0.00 sec)


mysql> use activemqdb;

Database changed

mysql> show tables;

+----------------------+

| Tables_in_activemqdb |

+----------------------+

| ACTIVEMQ_ACKS        |

| ACTIVEMQ_LOCK        |

| ACTIVEMQ_MSGS        |

+----------------------+

3 rows in set (0.00 sec)  


activemq_acks   用於存儲訂閱關係,如果是持久化TOPIC,訂閱者和服務器的訂閱關係在這個表保存

activemq_msgs   用於存儲消息,Queue和Topic都存儲在這個表中


6.測試

配置好後可以登錄監控管理頁面去看隊列情況


http://192.168.23.240:8161/admin

1.添加用戶名和密碼,在conf目錄下找到jetty-realm.properties

cd /usr/local/activemq/conf/

vi jetty-realm.properties

     18 # Defines users that can access the web (console, demo, etc.)

     19 # username: password [,rolename ...]

     20 system: manager,admin                          添加這一行,管理員的賬號和密碼

     21 admin: admin, admin

     22 user: user, user

~

2.修改配置jetty.xml文件

cd /usr/local/activemq/conf/

[root@fanxiaohui conf]# vi  jetty.xml

     48 

     49     <bean id="rewriteHandler" class="org.eclipse.jetty.rewrite.handler.RewriteHandler">

     50         <property name="rules">

     51             <list>

     52                 <bean id="header" class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">

     53                   <property name="pattern" value="*"/>

     54                   <property name="name" value="X-FRAME-OPTIONS"/>

     55                   <property name="value" value="SAMEORIGIN"/>

     56                 </bean>

     57             </list>

     58         </property>

     59     </bean>

刪除以上的行

     57                                 <!-- Enable embedded file server for Blob messages -->

     58                                 <!-- <bean class="org.eclipse.jetty.webapp.WebAppContext"> <property name="contextPath"

     59                                         value="/fileserver" /> <property name="resourceBase" value="${activemq.home}/webapps/fileserver"

     60                                         /> <property name="logUrlOnStart" value="true" /> <property name="parentLoaderPriority"

     61                                         value="true" /> </bean> -->


添加以上的行


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章