我们使用的是WAS7,我们的ear被部署在这上面。
环境详细信息
操作系统:AIX7.1
处理器体系结构: ppc64
处理器数:8
Java版本:JRE1.6.0 AIX ppc64-64构建jvmap6460sr10fp1-20120202_101568 (01 6460sr10fp1-20120321_01(SR10 FP1))
虚拟机版本: VM构建20120202_101568即时(JIT)编译器开关,提前编译(AOT)编译器开关,编译器版本( r9_20111107_21307ifx1 )
垃圾收集器版本: GC - 20120202_AA_CMPRSS
Java堆信息
最大Java堆大小: 1024m
初始Java堆大小:512米
我尝试使用、IBM和Monitor转储分析器工具来分析堆转储。
下面的是线程的摘要

但是我不能分析,这个静力学是好还是需要改进?
由于有那么多线程始终处于停车/等待状态(每天使用线程集10次),有时应用程序需要花费4秒来处理5条消息,这些消息应该是每秒5条消息。
应用程序运行良好,并实现了每秒5条消息的SLA,但是说一天中有几次处理5条消息需要4秒。
注:并发处理。
如果当时我试图获得线程转储,就像我在上面分享的一样。
发布于 2014-03-14 10:30:19
除非您有明确的理由认为线程争用是原因,否则我不认为线程转储是开始调查“一天几次处理5条消息需要4秒时间”的最佳位置。造成这个问题的原因可能很多很多,其中线程争用只是其中之一。
首先,我要指出这些信息。据推测,消息的速度被记录在某个地方,如果不是,我将从这个开始。web服务器访问日志能够帮助识别这些消息吗?
一旦你有了它们,这些信息有什么特别之处吗?如果你自己访问这些消息,你能复制缓慢吗?它们是否总是在同一时间/它们是否试图访问相同的实体或执行相同的操作?消息是由同一个用户发送的吗?
如果是可复制的话,你的工作就完成了一半。现在,您可以开始使用分析工具来确定为什么要花这么长时间。
即使慢消息不能被复制,并且你不能识别信息的任何显著特征,至少你现在知道它发生的时间,并且可以更精确地钻研。
一旦你有了时间,你就可以在那个时候开始研究不同的原因。一份不累人的清单将包括:
识别这些问题需要他们自己的权利,但是Stackoverflow应该有很多答案。关于线程-争用-是在问题发生时进行的线程分析。就我个人而言,我想要一个线程转储从那一刻起,试着看看哪些线程被其他线程阻塞。
https://stackoverflow.com/questions/22401217
复制相似问题