Tomcat 9响应缓慢

时间:2018-12-05 20:17:43

标签: java performance tomcat tomcat8 tomcat9

我有一个Web应用程序(jsp),可以在Tomcat 8.0.46上正常运行超过一年。几周前,在升级几天后,tomcat对某些请求的响应延迟了8-16秒,我们才升级到Tomcat 9.0.10。

我在localhost访问日志中看到超过800个请求/秒,因此我将maxThreads如下增加到512,并将最大堆内存增加到4096MB。

<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="512" minSpareThreads="4"/>

<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

但是问题没有解决,所以我将所有配置与旧的Tomcat进行了比较,发现tomcat9使用的是tomcat executor,而旧的则未使用它。执行者会影响请求处理时间吗?

旧的tomcat配置

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

仅供参考,该Web应用程序仅包含jsps,很少使用jsps来与使用DBCP的DB进行交互并给出XML响应。

我不怀疑数据库连接池,因为它已经被使用并且没有 改变。

CPU : Xenon
RAM: 8GB
OS : Window 2012 server
JDK : jdk1.8.0_144

在本地主机访问日志中增加了响应持续时间,可以看到某些请求中的延迟,但是之前和之后的请求具有15毫秒(粗体)的快速响应。

    10.50.29.27 - - [17/Dec/2018:09:27:23 -0500] "GET /App1/sendevent.jsp?TNAME=Transfer1 HTTP/1.1" 200 90 270BA450469B7AA71D22252711CA288A **0.015** http-nio-8080-exec-3
    10.50.29.26 - - [17/Dec/2018:09:27:23 -0500] "GET /App1/Start.jsp?ACTION=START&ID=3154583920&SID=$num$&SESSIONID=63AA673E-B6EF-447E-AAB9-3B5B7260EB03&ScriptID=$sid$&ScriptData=$scriptdata$ HTTP/1.1" 200 2948 D97741884AD1005359430A3307D5D44E **6.031** http-nio-8080-exec-5
    10.50.29.27 - - [17/Dec/2018:09:27:23 -0500] "GET /App1/sendevent.jsp?TNAME=Transfer1&TRANSFER_RESULT=S&LAST_ACTION=1&TRANSFER_REASON=connection.disconnect.transfer&TRANSFER_NOTE=undefined HTTP/1.1" 200 90 270BA450469B7AA71D22252711CA288A **0.000** http-nio-8080-exec-9

1 个答案:

答案 0 :(得分:0)

acceptorThreadCount=2在两种情况下为我解决了生产力问题:

  1. 小型虚拟机(应用程序为XWiki)上Debian下的Tomcat 8
  2. 大型生产服务器(应用程序为DSpace:jspui / xmlui / oai / solr)上Centos下的Tomcat 9。

当我看到足够好的生产率时,第三种情况是:

  1. 在非常小的旧Dell服务器(应用程序为DSpace:jspui / xmlui / oai / solr)上,Windows Server 2008 Standard SP2下的Tomcat 8。这是案例2的先前实例,一直保留到过渡结束。