【问题标题】:Tomcat 9 slow responseTomcat 9 响应慢
【发布时间】:2019-05-07 11:34:06
【问题描述】:

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

我在 localhostaccess 日志中看到超过 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" />

仅供参考,webapp 仅包含 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

【问题讨论】:

  • 如果您根本不使用执行器,您的 Tomcat 9 会如何表现?
  • 我在 QA 环境中测试,我可以看到延迟减少了 50%,必须在 prod 环境中检查
  • 检查服务器的 CPU 利用率。如果它“正常”,则增加 maxThreads 并再次检查您的 CPU。
  • 你找到解决方案了吗?我有同样的问题?
  • 否,但通过设置 acceptorThreadCount =2 略微提高了性能

标签: java performance tomcat tomcat8 tomcat9


【解决方案1】:

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

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

我看到生产力足够高的第三种情况是:

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

【讨论】:

    猜你喜欢
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 2012-02-08
    • 1970-01-01
    相关资源
    最近更新 更多