【发布时间】:2013-02-28 15:02:58
【问题描述】:
我有一个问题让我发疯,需要你的帮助。 设置如下: - 处理器 4 核 + HT(所以 linux 说 8 cpus) -centos - glassfish 3(最新版本) - 在 glassfish 上只有一个应用程序正在运行,http-listener1 监听端口 8080(管理员监听器打开,https 关闭) - 有一个连接池
几天后一切正常,然后突然停止: - 负载达到 400 - java进程的cpu使用率达到800 - gf 停止服务页面,或者服务速度极慢: - 管理员监听器(端口 4848)运行正常 - 我启动分析器,一切似乎都运行良好,但我找不到问题所在
我没有更多的想法去哪里寻找以及如何解决问题。当大量用户访问该网站时似乎会出现问题,但问题是即使没有任何用户,gf 也永远不会恢复。
有什么想法吗?
EDIT 粘贴评论中的 JVM 设置:
JVM 设置:
<jvm-options>-Xms10240m</jvm-options>
<jvm-options>-Xmx10240m</jvm-options>
<jvm-options>-XX:CMSIncrementalDutyCycle=10</jvm-options>
<jvm-options>-XX:CMSIncrementalDutyCycleMin=10</jvm-options>
<jvm-options>-XX:+CMSIncrementalMode</jvm-options>
<jvm-options>-XX:+CMSIncrementalPacing</jvm-options>
<jvm-options>-XX:+UseConcMarkSweepGC</jvm-options>
<jvm-options>-XX:MaxPermSize=512m</jvm-options>
<jvm-options>-XX:NewRatio=2</jvm-options>
<jvm-options>-XX:PermSize=512m</jvm-options>
【问题讨论】:
-
垃圾收集是你该看看的...
-
如果是 GC,它会在几分钟后恢复工作,当它卡住时会卡住几天
-
检查线程转储也可能值得一看。也许它揭示了这个过程实际上在做什么。