不确定这是否更适合 ServerFault,但由于我不是管理员而是开发人员,我想我会尝试 SO。
一段时间以来,我们一直在努力保持我们的多服务器配置稳定。上月底,我们在 CF 7.0.2 下在两台服务器设置(每台一个实例)上运行。那时,我们设法将每个实例的正常运行时间提高到大约 1 周,然后它们才会自行重启。自本月初以来,我们升级到 CF 9 并且我们回到了每天多次重启的第一方。
我们当前的配置是 2 台 Win2k3 服务器,运行 4 个实例的集群,每台服务器 2 个实例。在这一点上,我们很确定这是由于 JVM 设置不当造成的。
我们一直在玩弄他们,虽然有些人比其他人更稳定,但我们从来没有完全正确。
从默认值:
java.args=-server -Xmx512m -Dsun.io.useCanonCaches=false -XX:MaxPermSize=192m -XX:+UseParallelGC -Dcoldfusion.rootDir={application.home}/
目前:
java.args=-server -Xmx896m -Dsun.io.useCanonCaches=false -XX:MaxPermSize=512m -XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=90 -XX:+UseParallelGC -Dcoldfusion.rootDir={application.home}/ -verbose:gc -Xloggc:c:/Jrun4/logs/gc/gcInstance1b.log
通过使用 FusionReactor 进行监控,我们确定我们确实需要超过默认的 512MB,平均而言,我们消耗的内存量在 300MB 左右徘徊,并且在重负载下可以达到 700MB。
大多数崩溃将记录在 jrun4/bin/hs_err_pid*.log 中,始终显示“Out of swap space”
我在帖子底部附上了昨天的 hs_err 和垃圾收集器日志文件的链接。
相关部分是(我认为)这个:
Heap
PSYoungGen total 89856K, used 19025K [0x55490000, 0x5b6f0000, 0x5b810000)
eden space 79232K, 16% used [0x55490000,0x561a64c0,0x5a1f0000)
from space 10624K, 52% used [0x5ac90000,0x5b20e2f8,0x5b6f0000)
to space 10752K, 0% used [0x5a1f0000,0x5a1f0000,0x5ac70000)
PSOldGen total 460416K, used 308422K [0x23810000, 0x3f9b0000, 0x55490000)
object space 460416K, 66% used [0x23810000,0x36541bb8,0x3f9b0000)
PSPermGen total 107520K, used 106079K [0x03810000, 0x0a110000, 0x23810000)
object space 107520K, 98% used [0x03810000,0x09fa7e40,0x0a110000)
从中,我推测它的 PSPermGen 已满(大多数日志在崩溃前会显示相同),这就是我们增加 MaxPermSize 但总数仍显示为 107520K 的原因!??!
这里没有人是 jRun 专家,所以任何关于下一步尝试的帮助甚至想法都将不胜感激!
日志文件: 对不起,我知道 sendspace 不是最友好的地方 - 如果您对日志文件有其他主机建议,请告诉我,我会更新帖子(所以不喜欢它们内联,它会破坏格式帖子)。
- hs_err 日志文件:http ://www.sendspace.com/file/fgak8l
- gc 日志:http ://www.sendspace.com/file/w0r2ct