gpt4 book ai didi

java - 我的 JBoss 服务器在 Linux 上达到 100% SYS CPU;什么会导致这个?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:43:01 26 4
gpt4 key购买 nike

我们已经调试这个 JBoss 服务器问题很长时间了。在大约 10 小时的工作后,服务器进入 100% CPU panic 攻击并停止运行。在此期间您无法运行任何新程序,因此您甚至无法通过 kill -quit 获取堆栈跟踪。这些 100% 的 SYS CPU 高负载持续 10-20 秒并且每隔几分钟重复一次。

我们已经研究了很长一段时间。我们怀疑它与 GC 有关,但无法通过较小的程序确认。我们使用 -clientParNew GC 在 i386 32 位、RHEL5 和 Java 1.5.0_10 上运行。

以下是我们目前所做的尝试:

  1. 我们限制了 CPU 亲和性,因此我们可以在高负载时实际使用服务器。使用 strace,我们看到了 SIGSEGV 的无限循环,然后是 sig 返回。

  2. 我们尝试用 Java 程序重现这一点。使用 WeakHashMap 或访问空指针时,SYS CPU% 确实会攀升。问题是 fillStackTrace 占用了大量用户 CPU%,这就是我们从未达到 100% SYS CPU 的原因。

  3. 我们知道,在 10 小时的压力下,GC 变得疯狂,而 full GC 有时需要 5 秒。所以我们假设它与内存有关。

  4. jstack 在此期间显示所有线程都被阻塞。 pstack 在那段时间里,偶尔会显示 MarkSweep 堆栈跟踪,所以我们也不能确定这一点。发送 SIGQUIT 没有产生任何结果:Java 在 SYS% 加载期结束后转储堆栈跟踪。

我们现在正尝试用一小段代码重现此问题,以便我们可以询问 Sun。

如果您知道是什么原因造成的,请告诉我们。我们对想法持开放态度,但我们一无所知,欢迎任何想法:)

感谢您的宝贵时间。

最佳答案

感谢大家的帮助。

最终我们升级(只有一半的 java 服务器)到 JDK 1.6,问题就消失了。只是不要使用 1.5.0.10 :)

我们设法通过仅访问空指针来重现这些问题(提升 SYS 而不是 US,并杀死整个 linux。)

再次感谢大家。

关于java - 我的 JBoss 服务器在 Linux 上达到 100% SYS CPU;什么会导致这个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/654872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com