最近几天我们正在监控 JBOSS 应用程序,发现线程数从 4000 到 6000 不等。昨天,它突然下降到 600-800 范围,要注意的是我们没有对 JBOSS 或 JVisualVM 进行任何配置更改. Live Peak 线程数约为 6200。现在根据图表线程数在 600-800 范围内。
计数突然减少是否有特殊原因?是否有专门的指南在分钟级别讨论此类细节?线程数突然增加的可能根本原因是什么?GC 在这种情况下会出现吗?
谢谢。
最近几天我们正在监控 JBOSS 应用程序,发现线程数从 4000 到 6000 不等。昨天,它突然下降到 600-800 范围,要注意的是我们没有对 JBOSS 或 JVisualVM 进行任何配置更改. Live Peak 线程数约为 6200。现在根据图表线程数在 600-800 范围内。
计数突然减少是否有特殊原因?是否有专门的指南在分钟级别讨论此类细节?线程数突然增加的可能根本原因是什么?GC 在这种情况下会出现吗?
谢谢。
计数突然减少是否有特殊原因?
您很可能正在使用缓存线程池。当它们不忙时这些超时,你可以看到很多(我的意思是几十个线程)一次死掉。恕我直言,拥有比 CPU 更多的线程通常不是一个好主意,甚至 600-800 也是疯狂的。恕我直言。
是否有专门的指南在分钟级别讨论此类细节?
在线程数量非常多的系统中,通常会出现这种情况,因为没有人关注正在使用的线程数量或担心它们在做什么或是否真的需要它们。我怀疑没有人可以解释为什么你需要这么多线程。
线程数突然增加的可能根本原因是什么?
这是您需要查看堆栈转储和线程名称以了解它们在做什么的地方,但很可能有一两个缓存线程池,其中线程数量暂时达到峰值。
GC 在这种情况下会出现吗?
它不会导致问题,但是拥有更多线程会减慢将所有线程置于执行 GC 所需的安全点所需的时间。对于数千个线程,您可以看到 GC 花费更多时间等待线程到达安全点,而不是实际清理垃圾。