我遇到了一个问题,Apache 因请求过多而停滞不前。当我查看服务器状态页面时,我可以看到大多数连接处于“正在读取请求”状态,但尚未完成。当我进行正常重启时,所有“正在读取请求”连接都消失了。由于重启时间不长,我信仰这些连接不再使用。
Apache 在一段时间内 (> 30 分钟) 填满了这些请求。但是当不再使用这些连接时,我期望一些超时来终止这些连接,但这并没有发生,或者超时太大。
有谁知道哪个超时应该终止这些连接或者我在错误的点搜索?
设置的一些细节:
HP-UX 上的 apache 2.0.55 带有 mod_jk 1.2.10
大多数处于“读取请求”状态的连接都是通过 mod_jk 连接到 tomcat 后端(客户端 --> HP-UX apache --> Tomcats),但不是全部。
我知道 mod_jk 是一个非常旧的版本,计划很快更新。
但我并不怀疑 mod_jk,因为将连接重定向到另一个使用较新 mod_jk 的 apache,然后将连接重定向到 tomcat(客户端 --> HP-UX apache --> Linux apache --> Tomcats)时会出现同样的效果。总是 HP-UX apache 充满“RR”连接。
答案1
您的workers.properties文件内容是什么?您是否尝试使用socket_timeout?
socket_timeout 0 Socket timeout in seconds used for the communication
channel between JK and remote host. If the remote host
does not respond inside the timeout specified, JK will
generate an error, and retry again. If set to zero
(default) JK will wait for an infinite amount of time on
all socket operations.
默认情况下,socket_timeout 是无限的。
答案2
httpd.conf 中 Apache 的超时值是多少?keepalive 是打开还是关闭?TimeOut 太长很容易导致您目前看到的情况。