您好我正在使用6个应用程序服务器平衡的java应用程序,我在其中1个中随机冻结了整个gc(导致应用程序超时),大约1-2个应用程序服务器。
GC.log
...
2011-12-13T10:38:36.576+0100: 79825.032: [GC [PSYoungGen: 874833K->66144K(1071936K)] 3516152K->2809316K(3868160K), 0.2535770 secs] [Times: user=0.94 sys=0.00, real=0.25 secs]
2011-12-13T10:38:36.830+0100: 79825.286: [Full GC [PSYoungGen: 66144K->0K(1071936K)] [ParOldGen: 2743171K->2753089K(2796224K)] 2809316K->2753089K(3868160K) [PSPermGen: 283256K->269894K(524288K)], 7.3616280 secs] [Times: user=25.14 sys=0.00, real=7.36 secs]
2011-12-13T10:38:46.152+0100: 79834.608: [Full GC [PSYoungGen: 752192K->0K(1071936K)] [ParOldGen: 2753089K->2751441K(2796224K)] 3505281K->2751441K(3868160K) [PSPermGen: 270340K->269781K(524288K)], 6.6231180 secs] [Times: user=22.52 sys=0.01, real=6.62 secs]
2011-12-13T10:38:54.591+0100: 79843.047: [Full GC [PSYoungGen: 752192K->0K(1071936K)] [ParOldGen: 2751441K->2719651K(2796224K)] 3503633K->2719651K(3868160K) [PSPermGen: 270670K->269784K(524288K)], 5.5780510 secs] [Times: user=19.75 sys=0.01, real=5.58 secs]
...
我的实际解决方法是杀死jboss并重新启动它(不是很好的解决方案)。
这是我的系统配置:
Mem: 6 Gb
Intel(R) Xeon(R) CPU L5640 @ 2.27GHz (4 core)
java version "1.6.0_26"
Scientific Linux release 6.0 (Carbon)
jboss-4.0.5.GA
Jboss参数:
-Xms4G
-Xmx4G
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000
-verbose:gc
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-XX:PermSize=512m
-XX:MaxPermSize=512m
-XX:+CMSClassUnloadingEnabled
-XX:+UseCompressedOops
-XX:+DisableExplicitGC
-XX:+UseParallelOldGC
-XX:ParallelGCThreads=4
-XX:+UseAdaptiveSizePolicy
-XX:+AggressiveOpts
-Xdebug
任何人都可以帮我吗? 感谢
答案 0 :(得分:0)
您是否尝试过使用自适应大小调整策略:-XX:+ UseAdaptiveSizePolicy和-XX:MaxGCPauseMilis = 100和-XX:GCTimeRatio = 19?
如果这没有用,那么Concurrent Mark Sweep Collector(-XX:UseConcMarkSweepGC)?
如果您有时间看一下标题为“我曾经学过的关于JVM性能调优@Twitter的所有内容”(slides,video)的演示文稿,它解释了在选择a时的权衡GC
答案 1 :(得分:0)
我认为你应该在这里分析你的应用程序,我担心别无选择...... 没有群集的全GC冻结吗? 您可以尝试使用不同的GarbageCollector运行,但可能导致此类行为的原因是应用程序中某处存在内存泄漏,或者至少在内存消耗方面存在“可疑错误”对象处理。
您可以做的另一件事是在一天内生成堆转储,看看是否存在任何可以指出问题的差异。
BTW,我想它的64位java和jboss,对吗? :)对于32位应用程序在同一进程中处理4 GB内存有点问题...