MQ高并发量时的调优参数设置说明

高可用(主从)与负载均衡架构图

消息发送中的接收Topic订阅结果消息队列URL地址、消息接收队列URL地址、消息代理的发送与接收队列URL地址以及消息转发器发送的Topic结果消息队列URL地址,均需设置为Failover 地址。

由于消息队列组件ActiveMQ是设置为主从的,因此不论什么组件连接消息队列的URL地址均需配置为主从Failover地址。 


  1. <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" advisorySupport="false">  

5. 消息队列组件ActiveMQ配置

通过改动消息队列组件ActiveMQ的配置文件activemq.xml。以“效率优先”的原则调整相关參数。配置说明例如以下:

5.1  ActiveMQ消息通知配置

消息通知实现了ActiveMQ的Broker上各种操作的记录跟踪和通知。可是在使用暂时队列实现同步消息时我们发现ActiveMQ产生了大量advisory通知消息,而且这些消息重复在网络中传输。这有可能与ActiveMQ 同步消息ACK机制有关。


取消消息通知的配置方法,在配置文件里添加例如以下配置:

  1. <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" advisorySupport="false">  

5.2删除不活动的队列配置

ActiveMQ的Queue在不使用之后,能够通过web控制台或是JMX方式来删除掉。

也能够通过配置。使得Broker能够自己主动探測到没用的队列(一定时间内为空的队列)并删除掉,回收响应资源。因为ActiveMQ使用时自己主动创建Destination。而且默认情况下不会删除掉。这样的仅仅添加不降低。导致在queue创建频繁的情况下,本功能很实用。

配置例如以下:

  1. <broker xmlns="http://activemq.apache.org/schema/core" schedulePeriodForDestinationPurge="10000" advisorySupport="false">  
  2.     <destinationPolicy>  
  3.        <policyMap>  
  4.           <policyEntries>  
  5.              <policyEntry queue=">" gcInactiveDestinations="true" inactiveTimoutBeforeGC="10000"/>  
  6.           </policyEntries>  
  7.        </policyMap>  
  8.     </destinationPolicy>  
  9. </broker>  

參数说明:

1)  schedulePeriodForDestinationPurge:10000  每十秒检查一次,

默觉得0,此功能关闭

2) gcInactiveDestinations:true  删除掉不活动队列。默觉得false

3) inactiveTimoutBeforeGC:30000 不活动30秒后删除,默觉得60秒

5.3死信队列配置

DLQ-死信队列(Dead Letter Queue)用来保存处理失败或者过期的消息。出现下面情况时,消息会被再投递

1)A transacted session is used and rollback() is called.

2)A transacted session is closed before commit is called.

3)A session is using CLIENT_ACKNOWLEDGE and Session.recover() is called.

当一个消息被redelivered超过maximumRedeliveries(缺省为6次)次数时,会给broker发送一个"Poison ack"。这个消息被觉得是a poison pill,这时broker会将这个消息发送到DLQ,以便兴许处理。

缺省的死信队列是ActiveMQ.DLQ。假设没有特别指定。死信都会被发送到这个队列。缺省持久消息过期,会被送到DLQ,非持久消息不会送到DLQ

缺省全部队列的死信消息都被发送到同一个缺省死信队列(ActiveMQ.DLQ)。不便于管理。能够通过individualDeadLetterStrategy或sharedDeadLetterStrategy策略来进行改动。

生产环境的配置例如以下:

  1. <policyEntry queue=">">  
  2.     <deadLetterStrategy>  
  3.    <!-- Use the prefix 'DLQ.' for the destination name, and make    
  4.    the DLQ a queue rather than a topic -->  
  5.    <individualDeadLetterStrategy queuePrefix="DLQ." useQueueForQueueMessages="true" />  
  6.     </deadLetterStrategy> 

  1. <!--简单丢弃过期消息,而不将它们放到DLQ中,完全跳过DLQ-->
  2.  <!--<deadLetterStrategy>
                          <sharedDeadLetterStrategy processExpired="false" />
                      </deadLetterStrategy>-->
  3.  
  4. </policyEntry>  

queuePrefix:设置死信队列前缀

useQueueForQueueMessages: 设置使用队列保存死信。还能够设置useQueueForTopicMessages,使用Topic来保存死信 

5.4  消息队列数过多问题

默认的消息队列配置中使用一个独立的线程负责将消息存储中的消息提取到消息队列中,而后再被分发到对其感兴趣的消息消费者。假设有大量的消息队列,建议通过启用optimizeDispatch这个属性改善这个特性,演示样例代码例如以下所看到的:

  1. <destinationPolicy>  
  2. <policyMap>  
  3. <policyEntries>  
  4. <policyEntry queue=">" optimizedDispatch="true"/>  
  5. </policyEntries>  
  6. </policyMap>  
  7. </destinationPolicy>  

代码清单中使用通配符“>”表示该配置会递归的应用到全部的消息队列中。


原文地址:http://www.cnblogs.com/lytwajue/p/7090931.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装MQ: 1. 下载并安装MQ软件包,可以从IBM官网下载到最新的MQ软件包。 2. 解压MQ软件包到指定目录,例如:/opt/mqm 3. 运行安装程序,执行命令:sudo ./mqlicense.sh -accept,输入MQ管理员账号密码。 4. 安装完成后,配置MQ环境变,在.bashrc文件中加入以下配置: ``` export MQ_INSTALLATION_PATH=/opt/mqm export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MQ_INSTALLATION_PATH/lib64 export PATH=$PATH:$MQ_INSTALLATION_PATH/bin ``` 5. 启动MQ服务,执行命令:sudo /opt/mqm/bin/strmqm QMGR01(其中QMGR01为MQ队列管理器的名称) 注意:在启动MQ服务前,需要确保系统中的TCP/IP设置正确,并且MQ服务所需的端口没有被占用。 TCP调优: 1. 调整TCP/IP参: 针对MQ服务,需要将TCP连接的keepalive机制设置为开启,确保MQ客户端与MQ服务端之间的连接能够保持活跃。可以通过修改内核参实现: ``` net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 8 ``` 其中,tcp_keepalive_time表示TCP连接在无据传输,发送keepalive包的间间隔;tcp_keepalive_intvl表示TCP连接未收到响应keepalive包,再次发送keepalive包的间间隔;tcp_keepalive_probes表示TCP连接未收到响应keepalive包,最多发送的keepalive包。 2. 调整MQ服务端参: 针对MQ服务端,可以通过修改mq.ini文件来调整MQ的参。例如,可以将队列管理器的最大消息长度设置为50MB: ``` MaxMsgLength=52428800 ``` 另外,还可以调整MQ的缓存大小、线程池大小等参,以提高MQ的性能。 3. 调整MQ客户端参: 针对MQ客户端,可以通过修改MQ连接工厂的属性来调整MQ的参。例如,可以将连接工厂的最大并发连接设置为10: ``` com.ibm.mq.jms.pool.maxConnections=10 ``` 另外,还可以调整MQ客户端的缓存大小、消息传输方式等参,以提高MQ的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值