内存问题 - Java 8 + Tomcat 6 对比 Java 8 + Tomcat 8

Memory Issue - Java 8 + Tomcat 6 vs Java 8 + Tomcat 8

我将 java 应用程序中的软件从 Java 1.6.0_22、Tomcat 6.0.26 升级到 Java 1.8.0_92, Tomcat 8.5.3。我看到严重的性能问题。我将范围缩小到 tomcat。我 运行 负载测试 Java 8+Tomcat 6 它是响应式的,至少 50 transactions/sec。但是当我 运行 与 Java 8+Tomcat 8 进行相同的测试时,在 运行s 之后,它被塞住了并且 tps 下降到 10 transactions/sec.

我注意到的一件事是,当我在 linux 服务器中执行 'top' 时 Tomcat 6 %MEM 永远不会超过 25%,但 Tomcat 8当我看到低响应时,它会超过 %85,并且每次执行负载测试时它都会变得更糟。有没有办法可以调整它以匹配 Tomcat 6 性能。我不希望生产性能因升级而降低。我有什么遗漏吗? 下面是 Visual VM,Tomcat 6 和 Tomcat 8.

的热门快照

Tomcat 6:

Tomcat 8:

我必须添加 -Xincgc tomcat JAVA_OPTS 才能获得所需的性能。虽然 -Xincgc 在 java 8 中已被弃用,但我不得不暂时使用它,直到找到更好的解决方案。