寿命测试中高负载下的 JVM 冻结
JVM Freeze under high load in longevity tests
运行 JVM:
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
OS:
CentOS release 6.4 (Final)
JVM 选项:
-Xmx4g -Xms4g -XX:MaxPermSize=4g -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintClassHistogram -XX:+CMSClassUnloadingEnabled -verbose:gc -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+DisableExplicitGC
运行 在 OSGI 环境中,Aerospike DB,NETTY (NIO) 用于联网。
运行周末长寿测试。
这是最后一张印刷品:
[2015-12-11 09:54:51,185] INFO : [GC pause (young)
2 天后,我在 pid 上 运行 strace,然后是下一个打印:
[2015-12-11 09:54:51,185] INFO : [GC pause (young) 3598M->1458M(4096M), 0.0280020 secs]
[2015-12-13 11:54:54,353] INFO : [GC pause (young) 3598M->1464M(4096M), 180001.5628870 secs]
第一次打印完成,下一次打印显示 GC 为 2 天。
jvm 在冻结期间没有响应线程转储信号 (pkill -QUIT pid)。
这种冻结每隔几天发生一次。
冻结不仅发生在 G1 收集器上,也发生在 CMS 收集器上。
我怎样才能开始调试这个,什么可能导致这个?
谢谢。
编辑:
再次冻结,这次 strace 没有解除冻结。
第二次冻结是使用jstack解除的
更新:
发现问题了!看看下面的答案。
我找到问题了!
这是 futex_wait()
中的一个内核错误,已向后移植到我们的内核版本。
您可以在这里阅读:
https://groups.google.com/forum/#!topic/mechanical-sympathy/QbmpZxp6C64
运行 JVM:
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
OS:
CentOS release 6.4 (Final)
JVM 选项:
-Xmx4g -Xms4g -XX:MaxPermSize=4g -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintClassHistogram -XX:+CMSClassUnloadingEnabled -verbose:gc -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:+DisableExplicitGC
运行 在 OSGI 环境中,Aerospike DB,NETTY (NIO) 用于联网。
运行周末长寿测试。 这是最后一张印刷品:
[2015-12-11 09:54:51,185] INFO : [GC pause (young)
2 天后,我在 pid 上 运行 strace,然后是下一个打印:
[2015-12-11 09:54:51,185] INFO : [GC pause (young) 3598M->1458M(4096M), 0.0280020 secs]
[2015-12-13 11:54:54,353] INFO : [GC pause (young) 3598M->1464M(4096M), 180001.5628870 secs]
第一次打印完成,下一次打印显示 GC 为 2 天。
jvm 在冻结期间没有响应线程转储信号 (pkill -QUIT pid)。 这种冻结每隔几天发生一次。 冻结不仅发生在 G1 收集器上,也发生在 CMS 收集器上。 我怎样才能开始调试这个,什么可能导致这个?
谢谢。
编辑: 再次冻结,这次 strace 没有解除冻结。 第二次冻结是使用jstack解除的
更新: 发现问题了!看看下面的答案。
我找到问题了!
这是 futex_wait()
中的一个内核错误,已向后移植到我们的内核版本。
您可以在这里阅读:
https://groups.google.com/forum/#!topic/mechanical-sympathy/QbmpZxp6C64