我们的服务器有 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 GB 以上,64 位寻址占用更多内存,因此您必须达到大约 48 GB 才能看到改进)。
使用 VisualGC,我可以看到 Eden 空间每 30 到 60 分钟循环一次,但 Survivor 0、Survivor 1、Old Gen 和 Perm Gen 发生的情况并不多。
我们有一个强大的服务器。我们可以做哪些其他优化来进一步减少 3 秒的 GC 时间?
有什么提高性能或扩展性的建议吗?
任何其他有帮助的输出或配置信息?