MBMQ性能调优.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MBMQ性能调优

MQ MB 性能调整 MQ性能调整 与API 调用有关的MQ性能考虑因素 1.1.1 关于MQCONN/MQDISC的使用 在MQ的13个函数中,MQCONN/MQDISC是最耗CPU的两个函数,其次是MQOPEN和MQCLOSE这两个函数,因此要尽量避免必要地重复使用这几个函数。比如,当您需要从队列中读取多条消息时,正确的编程方法应该如下: MQCONN MQOPEN MQGET . . . MQGET MQCLOSE MQDISC 即:连接/断开队列管理器一次,打开/关闭队列一次,读取消息多次。而不应该反复建立与队列管理器的连接和反复进行队列打开/关闭操作。 1.1.2 消息大小对mqput, mqget函数耗时的影响 尽量减小消息的大小,小消息的读取效率要高。对于mqget, mqput这两个函数而言,8k以下的消息的耗时差别不大,8k到128k的消息的耗时随着消息大小的增加而增加。大于128k的消息耗时较大,因为当与队列相关的内存满了的时候,会有硬盘交换。 同时要注意,从传输效率而言,如果在广域网上进行消息传输,消息太小会影响传输效率,因为对于每一消息,MQ都会有一个消息头,它会占有一定的字节数,如果把消息拆分太小,每个消息的传输头都会占据一定的开销。 1.1.3 对一个空队列的open,close 操作比非空队列的同样操作耗时要多。 第一次open队列耗时比接下来的open 耗时要多,对本地队列和远程队列的open,close耗时基本相同。 1.1.4 使用MQCMIT对消息进行批处理 当处理一批消息时,可以采用MQCMIT函数,将若干消息作为一个完整的交易来处理,消息将作为一个batch统一提交,而不是一个个地分别提交,因此,可以提高性能。尤其对于永久性的消息效果更加明显。 1.1.5 当向队列管理器仅发送一条消息时,使用MQPUT1函数。 在MQ的13个函数中,MQPUT1实现了这样一种功能,即它合并了MQOPEN, MQPUT, MQCLOSE三个函数的功能,在打开队列并且只希望发送一条消息时,它的CPU消耗比上述三个函数相加要少。 1.1.6 用match correlation ID的方法取消息比不匹配性能要差。 与队列属性有关的MQ性能考虑因素 1.2.1 消息的永久性和非永久性 MQ的消息分为永久性消息和非永久性消息两种,永久性消息是保存在硬盘存储介质上的,需要纪录日志的;相反,非永久性消息是存储在内存中的,不需 要硬盘读写,因此使用非永久性消息的性能比永久性消息的性能要高很多,具体而言,最大可以提高近十倍。要注意的是,只有永久性消息的可靠性是可以保证的, 即在发生故障,如当系统重启或队列管理器重启时,可以保证不丢失。因此,应根据您的业务需求和网络状况来确定消息的属性。 1.2.2 调整队列的相关参数设置: 对于队列而言,除了可以通过MQSC的define queue命令设置它的属性之外,有另外两个参数直接影响队列的性能,而这两个参数只有通过qm.ini文件进行设定。它们分别是:队列文件的大小 (Maximum amount of bytes in a queue)和为每一个队列的非永久性消息保留的内存大小(Maximum amount of memory reserved for non-persistent messages),它们的缺省值分别对应于DefaultQFileSize和DefaultQBufferSize这两个参数。 队列的定义存储在硬盘上,并且在队列被打开时申请资源。我们可以设置队列DafaultQFileSize和DafaultQBufferSize两个参数来确定队列的定义参数,这些参数在队列管理器重启时生效,下面分别给予描述。 1) 队列文件大小 缺 省情况下,队列文件在硬盘上的大小最大是320M, 它会被预先分配195kb内存,这195kb内存会在队列打开时获得。队列文件的大小最大值可以达到1G bytes, 这可以通过设置DefaultQFileSize参数来设定,当其设为1G时,队列打开时会申请350kb内存。 2)非永久性消息对应的内存大小 缺省 情况下,对每个队列而言,用来存储non-persistent消息的共享内存是64kb, 我们可以通过修改DafaultQBufferSize参数将其增加至1MB。在打开队列的时候,要申请如此数量的内存,因此它直接影响到队列管理器需要 的内存资源的大小,包括实存和虚存。推荐值是把该值设制成64kb的两倍,即128kb。永久性消息是存在硬盘上的,而非永久性消息是存在内存中的,当设 定的buffer不够时,要进行磁盘交换,速度就会减慢,把它扩大后,若不进行硬

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档