我有一个web应用程序(Jsp),它在Tomcat 8.0.46上运行了一年多。几周前,我们升级到Tomcat 9.0.10,经过几天的升级,tomcat对一些请求的响应延迟了8-16秒。
我在localhostaccess日志中看到了800多个请求/秒,因此我将maxThreads增加到下面的512,最大堆内存增加到4096 max。
<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执行器,而old没有使用它。执行者会影响请求处理时间吗?
旧tomcat配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />FYI -- webapp仅由jsps组成,很少使用DBCP与DB交互,并给出XML响应。
我并不怀疑DB连接池,因为它已经被使用并且没有改变。
CPU : Xenon
RAM: 8GB
OS : Window 2012 server
JDK : jdk1.8.0_144将响应时间持续时间添加到localhost访问日志中,可以在某些请求中看到延迟,但之前和之后的请求有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发布于 2019-07-09 14:40:07
acceptorThreadCount=2在两个案例中为我解决了生产率问题:
第三种情况是,当我看到足够好的生产力时:
https://stackoverflow.com/questions/53640086
复制相似问题