【问题标题】:Tomcat hangs due to large requestsTomcat 因大量请求而挂起
【发布时间】:2014-08-14 03:33:03
【问题描述】:

我有一个部署在 Apache Tomcat 服务器中的 Grails 应用程序。一切正常,但有时应用程序会连续收到大约 100-200 个请求(由于 API 集成,这些请求在几分钟内由 API 发送到我的应用程序,而不是由我的应用程序发送到 API)和 tomcat开始挂起(虽然没有错误)。

请求主要是从所使用的 API 发送的数据中执行一些小的 DB 更新。

有什么办法可以解决这个问题吗?任何 jvm 设置或任何代码更改来处理这个?

【问题讨论】:

    标签: java mysql tomcat grails


    【解决方案1】:

    你需要增加你的 tomcat 服务器的最大线程数

    <Connector port="8080" address="localhost"     
         maxThreads="250" <!-- here -->
          maxHttpHeaderSize="8192"
         emptySessionPath="true" protocol="HTTP/1.1"
         enableLookups="false" redirectPort="8443" acceptCount="100"
         connectionTimeout="20000" disableUploadTimeout="true" />
    

    https://web.archive.org/web/20160410090326/http://www.genericarticles.com/mediawiki/index.php?title=How_to_optimize_tomcat_performance_in_production

    【讨论】:

    • 谢谢...我会试试这个。
    • 我们可以将这个值增加到 400 或 500 左右吗?它会影响内存吗?
    • 这真的取决于在投入生产之前先尝试在登台服务器上工作。
    • 谢谢,我看看情况如何
    • 我在大约 1000 MaxThreads 之前尝试过它工作正常,因为我们没有达到那个峰值情况,但如果你在 4 核(3.x GHZ)或更多服务器上运行,我认为它会很好
    【解决方案2】:

    在增加 NIO 线程限制之前,请确保您的 I'O 操作能够处理负载。如果 I/O 操作无法处理负载线程将再次快速堆积,并且由于 DB 的背压而达到 NIO 线程限制的阈值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      • 1970-01-01
      • 2019-04-20
      相关资源
      最近更新 更多