MBMQ性能调优[参考].pdfVIP

  • 35
  • 0
  • 约9.81千字
  • 约 7页
  • 2021-10-19 发布于福建
  • 举报
MQ MB 性能调整 1. MQ 性能调整 1.1. 与 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 的方法取消息比不匹配性能要差。 1.2. 与队列属性有关的 MQ 性能考虑因素 1.2.1 消息的永久性和非永久性 MQ的消息分为永久性消息和非永久性消息两种, 永久性消息是保存在硬盘存 储介质上的, 需要纪录日志的; 相反,非永久性消息是存储在内存中的, 不需 要 硬盘读写, 因此使用非永久性消息的性能比永久性消息的性能要高很多, 具体而 言,最大可以提高近十倍。 要注意的是, 只有永久性消息的可靠性是可以保证的, 即在发生故障,如当系统重启或队列管理器重启时,可以保证不丢失。因此,应 根据您的业务需求和网络状况来确定消息的属性。 1.2.2 调整队列的相关参数设置: 对于队列而言,除了可以通过 MQSC的define queue 命令设置它的属性之 外,有另外两个参数直接影响队列的性能,而这两个参数只有通过 qm.ini 文件 进行设定。 它们分别是: 队列文件的大小 (Maxim

文档评论(0)

1亿VIP精品文档

相关文档