Java 部署在Tomcat上的应用程序的性能问题
最近,我们已经将所有公司的应用程序从Websphere迁移到Tomcat应用服务器。作为这个过程的一部分,我们进行了性能测试 我们发现Tomcat中有两个应用程序的性能下降超过100%。我们增加了线程的数量,我们配置了数据源设置以适应我们的测试,我们还增加了Tomcat服务器中的读写缓冲区大小Java 部署在Tomcat上的应用程序的性能问题,java,performance,tomcat,Java,Performance,Tomcat,最近,我们已经将所有公司的应用程序从Websphere迁移到Tomcat应用服务器。作为这个过程的一部分,我们进行了性能测试 我们发现Tomcat中有两个应用程序的性能下降超过100%。我们增加了线程的数量,我们配置了数据源设置以适应我们的测试,我们还增加了Tomcat服务器中的读写缓冲区大小 Application Background: -> Spring Framework -> Hibernate -> Oracle 12c -> JSPs
Application Background:
-> Spring Framework
-> Hibernate
-> Oracle 12c
-> JSPs
-> OpenJDK 8
我们已经检查了数据库,没有发现数据库中的性能问题。运行测试时的CPU利用率始终小于
10%
堆设置是
-xms=1.5G到-xmx=2G
,并且它使用的资源永远不会超过1.2G
我们还有两个节点,顶部有HAProxy来平衡负载。(我们没有安装web服务器) 尽管我们尽了最大的努力,但仍无法确定导致性能下降的问题。我知道这些信息不足以为我们的问题提供解决方案,但是,任何关于如何继续的建议都将非常有用,因为我们遇到了死胡同,无法继续 如果您能分享任何有助于发现问题的观点,我们将不胜感激
谢谢。进行线程转储,分析应用程序的哪个部分有问题,并从那里开始故障排除
按照本文的内容详细解释线程转储分析-获取线程转储,分析应用程序的哪个部分存在问题,并从那里开始故障排除
按照本文的内容详细解释线程转储分析-您提到的问题有很多可能的原因,实际上没有太多数据可供处理。不管怎样,正如kann所评论的,一个好的开始方法是收集java进程的线程转储 我还想问一下,您是在同一台服务器上运行,还是在新安装的服务器上运行,以及它们的外观(从资源角度看)。测试期间是否存在CPU/内存/IO限制
关于Xmx,听起来您没有将
-XX:+AlwaysPreTouch
标志传递给JVM,但我建议您研究一下,因为它会使JVM在启动时将堆内存归零,而不是在运行时执行(这可能意味着性能受到影响).您提到的问题有很多可能的原因,但实际上没有太多数据可供处理。不管怎样,正如kann所评论的,一个好的开始方法是收集java进程的线程转储
我还想问一下,您是在同一台服务器上运行,还是在新安装的服务器上运行,以及它们的外观(从资源角度看)。测试期间是否存在CPU/内存/IO限制
关于Xmx,听起来您没有将-XX:+AlwaysPreTouch
标志传递给JVM,但我建议您研究一下,因为它会使JVM在启动时将堆内存归零,而不是在运行时执行(这可能意味着性能受到影响)