ActiveMQ安装优化

来源:互联网 发布:决战武林进阶数据地煞8 编辑:程序博客网 时间:2024/05/18 13:44

ActiveMQ性能测试

http://m.blog.csdn.net/blog/brushli/41750615

1、下载ActiveMQ 
官网:http://activemq.apache.org/

2、安装ActiveMQ 
解压压缩包即可直接使用

3、修改端口号、账号密码 
默认连接端口为61616,按如下我把它修改为61617: 
vi conf/activemq.xml

        <transportConnectors>            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->            <transportConnector name="openwire" uri="tcp://0.0.0.0:61617?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>            <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>            <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>            <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>            <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>        </transportConnectors>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

默认web console端口为8161,按如下我把它修改为8162: 
vi conf/jetty.xml

    <bean id="jettyPort" class="org.apache.activemq.web.WebConsolePort" init-method="start">             <!-- the default port number for the web console -->        <property name="host" value="0.0.0.0"/>        <property name="port" value="8162"/>    </bean>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

默认账号密码为admin/admin,按如下我把它修改为admin/admin123456 
vi conf/users.properties

admin=admin123456
  • 1
  • 1

4、调整配置 
1) 修改持久化kahaDB的配置,如下:

    <persistenceAdapter>        <kahaDB directory="${activemq.data}/kahadb" indexCacheSize="100000" indexWriteBatchSize="1000" enableJournalDiskSyncs="false"  journalMaxFileLength="128mb" concurrentStoreAndDispatchQueues="true" concurrentStoreAndDispatchTopics="true"/>    </persistenceAdapter>
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

其中参数,大家网上查一下kahaDB的配置了解下便可,这样配置满足一般应用了,我测试速度在2500 - 4000多的样子。不过具体还要看机器硬件。

这里要说明的是,按我测试5.13.0版本,如果kahaDB不做任何修改,在开启持久化的情况下,生产者(写入)速度只有三十多每秒的样子。(不知道其他版本默认是否这样)

2) 对一个broker的阈值是通过在activemq.xml中的配置中的部分设定的。这个特征允许producer仍然能够在consumer由于耗尽内存或转向producer flow control而变慢时发送消息,memoryUsage 默认值为20m,调整为128m

<systemUsage>    <systemUsage>        <memoryUsage>            <memoryUsage limit="512 mb"/>        </memoryUsage>        <storeUsage>            <storeUsage limit="1 gb" name="foo"/>        </storeUsage>        <tempUsage>            <tempUsage limit="100 mb"/>        </tempUsage>    </systemUsage></systemUsage>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

5、启动和停止 
启动:ActiveMQHOME/bin/activemqstart{ActiveMQ_HOME}/bin/activemq stop

6、顺便提几点关于使用spring集成JMS的 
1) 三种消息监听器可以参考帖子 http://haohaoxuexi.iteye.com/blog/1893676 
2) 消息的重投策略: 
使用事务,并且调用了rollback()方法; 
一个事务session,关闭之间调用了commit; 
session中使用CLIENT_ACKNOWLEDGE签收模式,并且调用了Session.recover()方法。 
3) 如果使用JTA分布式事务,需要修改 jms:listener-Container 的 acknowledge=”transacted” 
4) 指定异步/同步发送 
jms.alwaysSyncSend=false&jms.useAsyncSend=true 
当alwaysSyncSend=false时,对于“NON_PERSISTENT”(非持久化)消息将使用“异步发送”;对于非持久化消息,使用异步发送是最佳的选择,我们通常使用这种手段调优。 
当alwaysSyncSend=false时,如果指定了useAsyncSend=true,则“PERSISTENT”类型的消息,也将使用异步发送,但broker仍无法担保消息一定被持久化成功。 
当alwaysSyncSend=false时,无论如何,在事务中的消息,都将使用异步发送。

0 0