Tomcat 7.0.33 前面是 Apache 2.2.24。我们使用配置了 APR/native 的 AJP 连接器。我最近注意到,Apache 访问日志中针对某一特定资源的一小部分请求(0.3%)出现了许多 500 错误。对于这 500 个响应中的每一个,Apache 错误日志中都有一对相应的错误行
[Wed Mar 06 04:07:42 2013] [error] ajp_read_header: ajp_ilink_receive failed
[Wed Mar 06 04:07:42 2013] [error] (70007)The timeout specified has expired: proxy: read response failed from (null) (*)
错误记录的时间是在请求记录时间之后的 5:06 到 5:07 分钟之间。与Timeout 300
设置的指令匹配。Tomcat 访问日志中没有记录任何内容,因此我假设请求从未到达那里。
据推测资源存在一些性能问题(它执行数据库更新并且负载相当高)但我更关心的是了解 Apache 和 Tomcat 之间的通信情况:
- 请求在什么时候超时?(连接、读取等)
- 我有哪些选项可以监控 ajp 连接的数量?
- 我有什么选项可以配置 Apache 和 Tomcat 来改善这种情况
Apache 使用带有标志的重写规则进行配置[proxy,last]
。Tomcat 连接器如下所示
<Connector port="8014"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
就像我之前说过的,我将单独致力于解决 Tomcat 资源的瓶颈问题。