【问题标题】:Tomcat stops responding to ApacheTomcat 停止响应 Apache
【发布时间】:2013-04-29 23:14:46
【问题描述】:

我正在尝试解决有关使用 mod_proxy_ajp 连接 Apache 和 Tomcat 的问题。就我而言,Tomcat 停止响应 Apache,并且 apache 日志打印日志错误消息,如下所示:

[Mon May 06 15:22:47 2013] [error] ajp_read_header: ajp_ilink_receive failed
[Mon May 06 15:22:47 2013] [error] (120006)APR does not understand this error code: proxy: read response failed from [::1]:18009 (localhost)

我不知道。谁能帮帮我?

【问题讨论】:

    标签: apache tomcat mod-proxy


    【解决方案1】:

    将 connectionTimeout 和 keepAliveTimeout 添加到 /etc/tomcat7/server.xml 中的 AJP 连接器。

    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" 
               connectionTimeout="10000" keepAliveTimeout="10000" />
    

    https://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html 上有关 AJP 连接器的信息

    • connectionTimeout = 此连接器在接受连接后等待显示请求 URI 行的毫秒数。 AJP 协议连接器的默认值为 -1(即无限)。

    • keepAliveTimeout = 此连接器在关闭连接之前等待另一个 AJP 请求的毫秒数。默认值是使用已为 connectionTimeout 属性设置的值。

    如果未定义 connectionTimeout 和 keepAliveTimeout 值,则 AJP 连接将无限期保持活动状态。导致线程多,默认最大线程数为200。

    我建议安装 psi-probe - 一个用于 Apache Tomcat 的高级管理器和监控器,从 Lambda Probe 派生而来。 https://code.google.com/p/psi-probe/

    【讨论】:

    • "如果未定义 connectionTimeout 和 keepAliveTimeout 值,则 AJP 连接将无限期保持活动状态。"实际上,如果设置了 connectionTimeout,tomcat 将使用该值作为 keepAliveTimeout。所以你只需要设置connectionTimeout。 tomcat.apache.org/tomcat-7.0-doc/config/ajp.html
    【解决方案2】:

    可以在http://javaworkbench.blogspot.co.at/2013/09/apache-web-server-tomcat-ajp.html找到对问题的很好解释以及如何解决它。

    简而言之: - 将 Apache 'MaxClients' 配置为等于 Tomcat AJP 'maxConnections' 配置。 - 配置 Tomcat AJP 'keepAliveTimeout' 以在一段时间不活动后关闭连接。

    【讨论】:

      【解决方案3】:

      我正在使用带有 apache 2.2 和 Centos 的 tomcat 8,发现问题说:

      [error] ajp_read_header: ajp_ilink_receive failed
      [error] (70007)The timeout specified has expired: proxy: read response failed
      

      我应用的解决方案效果很好:

      1. Configure Apache 'MaxClients' to be equal to the Tomcat AJP 'maxConnections' configuration.
      2. Configure Tomcat AJP 'keepAliveTimeout' to close connections after a period of inactivity.
      

      这是来自 tomcat server.xml 的示例:

      <Connector port="8009" protocol="AJP/1.3" maxConnections="256" keepAliveTimeout="30000" redirectPort="8443" />
      

      如果您喜欢此解决方案,请为答案投票。 干杯

      【讨论】:

        【解决方案4】:

        试试这个:

        1. 尝试增加线程数。 (它会推迟错误)
        2. 在 tomcat 配置中尝试 "org.apache.coyote.ajp.AjpProtocol" 而不是 APR。

        【讨论】:

        • 你的意思是在 server.xml 中用&lt;Listener className="org.apache.coyote.ajp.AjpProtocol" SSLEngine="on" /&gt; 替换&lt;Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /&gt; 吗?
        • 是的。我不确定,但可能对你有用。所以尝试一次。
        • 我试过了。但我遇到了其他错误[Mon May 06 17:21:26 2013] [error] proxy: AJP: disabled connection for (localhost) [Mon May 06 17:24:55 2013] [error] (111)Connection refused: proxy: AJP: attempt to connect to 127.0.0.1:18019 (localhost) failed [Mon May 06 17:24:55 2013] [error] ap_proxy_connect_backend disabling worker for (localhost) [Mon May 06 17:24:55 2013] [error] proxy: AJP: failed to make connection to backend: localhost。
        • 你能通过这个链接吗?它包含几乎所有此类错误的解决方案。 serverfault.com/questions/19947/…
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-11
        • 1970-01-01
        • 1970-01-01
        • 2018-02-14
        • 1970-01-01
        • 2017-12-24
        相关资源
        最近更新 更多