首页 > 解决方案 > 部署在 Tomcat 上的应用程序的性能问题

问题描述

最近,我们将所有公司的应用程序从 Websphere 迁移到了 Tomcat 应用程序服务器。作为此过程的一部分,我们完成了性能测试。

我们发现一些应用程序在 Tomcat 中的性能下降超过 100%。我们增加了线程数,我们配置了数据源设置以适应我们的测试,我们还增加了 Tomcat 服务器中的读写缓冲区大小。

Application Background:

-> Spring Framework   
-> Hibernate   
-> Oracle 12c   
-> JSPs   
-> OpenJDK 8

我们已经检查了数据库,发现数据库中的性能没有问题。
运行测试时的 CPU 利用率始终低于10%.
堆设置是-xms = 1.5G to -xmx = 2G,它永远不会使用超过1.2G.
我们还有两个节点和顶部的 HAProxy 来平衡负载。(我们没有网络服务器)。

尽管我们尽了最大的努力,但我们无法查明导致性能下降的问题。我知道这些信息不足以为我们的问题提供解决方案,但是,任何关于如何进行的建议都会非常有帮助,因为我们遇到了死胡同并且无法继续进行。

如果您可以分享任何有助于发现问题的观点,请不胜感激。

谢谢。

标签: javaperformancetomcat

解决方案


您提到的问题有很多可能的原因,并且确实没有太多数据可供使用。不管怎样,正如kann评论的那样,一个好的开始方法是收集java进程的线程转储。

我还会质疑您是否在同一台服务器上运行,或者它是否是新设置的服务器以及它们的外观(资源方面)。测试期间是否有任何 CPU/内存/IO 限制?

关于 Xmx,听起来您没有将-XX:+AlwaysPreTouch标志传递给 JVM,但我建议您查看它,因为它会使 JVM 在启动时将堆内存归零,而不是在运行时执行(这可能意味着性能下降)。


推荐阅读