use*_*922 5 java optimization performance tomcat garbage-collection
我们的服务器具有128GB的RAM和64个内核,在CentOS 6.3上运行Tomcat 7.0.30和Oracle jdk1.6.0_38.
每隔60分钟,我们就会看到垃圾收集时间为45-60秒.添加-XX:-UseConcMarkSweepGC将页面加载时间增加了大约10%,但将其降低到大约3秒,这是一个可接受的权衡.
我们的配置:
-Xms30g -Xmx30g -XX:PermSize=8g -XX:MaxPermSize=8g -Xss256k -XX:-UseConcMarkSweepGC
我们将堆设置为30 GB以保持32位寻址(我读到32位以上,64位寻址占用更多内存,因此您必须转到大约48 GB才能看到改进).
使用VisualGC,我可以看到Eden空间每隔30-60分钟就会循环一次,但幸存者0,幸存者1,老一代和Perm Gen的情况并不多.
我们有一个强大的服务器.我们还可以进行哪些其他优化以进一步缩短3秒的GC时间?
任何提高性能或扩展的建议?
任何其他输出或配置信息会有帮助吗?
看来你需要增量GC来减少暂停:
对于没有 VisualGC 的跟踪,这对我来说总是很顺利(catalina.out 中的输出):
2013-01-05T22:52:13.954 + 0100:15918369.557:[GC 15918369.557:[DefNew:65793K->227K(98304K),0.0031220秒] 235615K->170050K(49152) 0K), 0.0033220 秒] [次数: user=0.01 sys =0.00,实际=0.00秒]
之后你就可以玩这个了:
参考:虚拟机垃圾收集调优