wewqeqw 发表于 2017-1-18 11:09:26

tomcat中的redis、activemq、activemq数据库调优的使用

1.下载安装包redis-3.2.2.tar.gz,并且进行解压,解压后编译源码

# tar-zxvf redis-3.2.2.tar.gz
# cd redis-3.2.2
# make
编译完成后提示
make: Leaving directory `/soft/redis-3.2.2/src'
2.编译完成后,在src目录下有四个可执行文件redis-server、
# mkdir /usr/local/redis
# cp redis.conf /usr/local/redis/
# cd src/
# cp redis-server /usr/local/redis/
# cp redis-benchmark /usr/local/redis/
# cp redis-cli /usr/local/redis/
# cd /usr/local/redis/
# ls
redis-benchmark   #redis性能测试工具
redis-cli         #redis命令行操作工具
redis.conf      redis配置文件
redis-server      #服务器的daemon启动程序

3.修改配置文件
# 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    配置文件已经改写为守护进程的方式
# ps -elf | grep redis
5 S root       6524      1080   0 - 33383 ep_pol 00:06 ?      00:00:00 /usr/local/redis/redis-server *:6379                     
0 S root       6528   3187080   0 - 25814 pipe_w 00:06 pts/1    00:00:00 grep redis

5.客户端测试一下是否启动成功,开启认证功能后redis测试方法必须指定服务器IP地址、端口和密码
# 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,并且进行解压,解压后编译源码
# tar -zxvf apache-activemq-5.14.1-bin.tar.gz
# mv apache-activemq-5.14.1 /usr/local/apache-activemq
# cd /usr/local/apache-activemq/bin/
2.启动activemq服务
/usr/local/activemq/bin/activemq start

3.查看端口是否有运行程序
# netstat -anpult | grep 61616
tcp      0      0 :::61616                  :::*                        LISTEN
3576/java

4.完成后添加开启自启动

# 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
# cd /usr/local/apache-activemq/lib
# mvmysql-connector-java-5.1.34.jar /usr/local/apache-activemq/lib/
你首先需要把MySql的驱动放到ActiveMQ的Lib目录下,如mysql-connector-Java-5.1.34.jar。
# cd /usr/local/apache-activemq/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服务

# /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')
#ps -elf | grepactivemq
0 S root       4123      1 4080   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/
# vijetty.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> -->

添加以上的行


页: [1]
查看完整版本: tomcat中的redis、activemq、activemq数据库调优的使用