针对MQ和WAS的优化,一般从哪些方面去做,怎样判断性能瓶颈出现在哪里?
如:怎样合理的配置WAS的线程数和JVM的大小?怎么发现和处理性能瓶颈?
MQ一般不存在性能问题,对内存和CPU消耗比较少。
一般可以从以下几个方面对MQ进行性能优化:
1。MQ的API中最耗CPU的是MQCONN、MQDISC、MQOPEN和MQCLOSE,尽量避免必要地重复使用,最好做相关的连接池(自己开发这块调用的话),批量消息使用一个MQCOMIT。只发送一条消息时用MQPUT1,性能消耗最小。
2。消息大小最好能少于8K,IBM的人说8K就是一个槛,大于它性能就越来越差。非重要的、不可丢失的消息,使用非持久性,非持久性消息只会在内存中,不会记日志,性能比持久性的消息高10倍。
3。日志分文件系统,/var/mqm/log和/var/mqm分别保存在不同的文件系统中,能提高I/O效率。日志文件尽量最大化,个数最小化,可减少日志文件切换频率,我们生产上好象就是主日志64M,5个。
4。 根据自己系统真实情况修改qm.ini中的默认配置,比如说:MaxChannels、MaxActiveChannels和PipeLineLength,当通道连接量大的时候应该改大MaxChannels、MaxActiveChannels。设置MCA采用多个线程的方式来传输消息需修改PipeLineLength
收起
1,WAS一般调优的话针对JVM、线程池、DataSource 连接池,
2,参数怎么调,需要根据实际应用去测试
一般初始化调参可以试着设置为以下:
| Dmgr Nodeagent | 集群server、 单点server | 备注 |
详细垃圾回收 | 默认 | 勾选 | 详细GC对于故障诊断有很大帮助,建议在运行应用的server上开启 |
Heapsize | 默认 | 512-2048 (建议值) 2048-2048(was8.5以上版本参考) | Heapsize默认值较小,建议适当调大,具体大小需根据应用类型以及测试结果来决定 |
Permsize | 默认 | 256-256 (建议值) | 永久区内存Permsize默认值为64M,对于特殊应用需要调大。 |
JVM日志 | 5M*15个 | 10M*20个 | SystemOut和SystemErr |
线程池设置 |
| 最小30-100 最大 100-200 建议值:最小50、最大150 | 无 |
数据源连接池 |
| 最小10-50 最大 50-150 建议值:最小30、最大100 | 无 |
3,需要结合监控数据和实际,去分析系统的瓶颈和优化的方法。