Sun Java System Message Queue 3.7 UR1 管理指南

代理吞吐量呈间歇性

症状:

可能的原因:

可能的原因:代理的内存资源非常低。

由于目的地和代理限制设置不当,代理采取了越来越严格的措施以防止内存过载,这样就导致代理变得非常迟缓,直到堆积的消息得到清除为止。

确认问题的起因:在代理日志中检查内存低的情况:

[B1089]:内存不足,代理正在尝试释放资源

该情况后面会接有一个描述新内存状态和已用内存总量的条目。另外请检查 JVM 堆中的可用内存:

imqcmd metrics bkr -m cxn

当总 JVM 内存接近 JVM 内存最大值时,可用内存就会很低。

解决此问题:

可能的原因:正在发生 JVM 内存回收(垃圾收集)。

内存回收会定期清扫整个系统,以释放内存。发生此操作时,所有的线程都会阻塞。要释放的内存量以及 JVM 堆的大小越大,因内存回收而导致的延迟就越长。

确认问题的起因:监视计算机上的 CPU 使用率。发生内存回收时,CPU 使用率会下降。

另外,使用以下命令行选项启动代理:

- vmargs -verbose:gc

其标准输出指明发生内存回收的时间。

解决此问题:在多个 CPU 的计算机中,将内存回收设置为并行发生:

-XX:+UseParallelGC=true

可能的原因:JVM 使用实时编译器来提高性能。

确认问题的起因:检查有无其他可能的原因导致此问题。

解决此问题:让系统运行一段时间,性能应该会有所改善。