14

我正在尝试解决有关使用 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)

我不知道。任何人都可以帮助我吗?

4

4 回答 4

15

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

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

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

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

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

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

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

于 2014-07-13T16:09:23.007 回答
6

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

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

于 2014-09-01T13:54:56.940 回答
5

我正在使用带有 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" />

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

于 2014-10-29T00:30:21.763 回答
4

试试这个 :

  1. 尝试增加线程数。(它将推迟错误)
  2. 在 tomcat 配置中尝试"org.apache.coyote.ajp.AjpProtocol"使用 APR。
于 2013-05-06T08:42:03.490 回答