Apache代理超时


19

我试图了解我们的Apache 2.2 error_log中的以下消息正在发生什么:

Wed May 18 21:03:29 2011] [error] [client 172.20.10.10] (70007)The timeout specified has expired: proxy: error reading status line from remote server super-load1-ga.test.com, referer: https://tester2.test.com/boom/ga/inside.asp

我们正在使用mod_proxy运行Apache 2.2。这个Apache超时请求与httpd.conf中5分钟超时值有关吗?(这意味着它在5分钟内没有收到来自远程服务器的响应。)或者这仅仅是来自远程服务器的响应,说它无法处理连接?

我看到此错误时,Apache很快用完了MaxClients。

代理条目的快速示例:

ProxyPass /boom/ga https://super-load1-ga.test.com
ProxyPassReverse /boom/ga https://super-load1-ga.test.com

Answers:


28

您在ProxyPass指令中增加了超时时间:

ProxyPass /boom/ga https://super-load1-ga.test.com connectiontimeout=300 timeout=300

超时值以秒为单位



我也在geeting错误指定的超时已过期....我关闭了ProxyRequests,所以这有关系吗?我应该增加超时时间

5

听起来您的服务器https://super-load1-ga.example.com响应时间过长。

在那种情况下,如果它只是坐在那里,那么Apache进程将等待它。该过程实质上被阻止,即无法执行其他任何操作。如果您没有足够快地超时,那么您将用完Apache进程并点击MaxClients,这似乎很有意义。

您应该在super-load1-ga.test.com网站上拥有日志,以查看请求花费了多长时间,它们必须花费一定的时间。

您可能会缩短ProxyPass连接的超时时间

http://httpd.apache.org/docs/current/mod/mod_proxy.html#workers


感谢Phil的大力回应。因此,您认为这达到了5分钟的主要httpd.conf TimeOut值,而Apache正在使会话超时?因为我没有设置特定于代理的超时,所以它将默认设置。关于代理超时建议,您认为我应该使用ProxyTimeout变量还是ProxySet命令?(ProxySet connectiontimeout = 5超时= 30)
roacha 2011年

2

要回答您的问题,是的,当Apache2 httpd超时时,代理模式下的Apache2 httpd会记录该错误消息。如果以代理方式连接到Apache2 httpd的服务器是原因,那么将会出现另一条消息。

该消息包含多个部分:The timeout specified has expired是与APR_TIMEUP错误代码等效的文本,请参见:

srclib / apr / misc / unix / errorcodes.c

case APR_TIMEUP:
    return "The timeout specified has expired";

然后proxy: error reading status line from remote server super-load1-ga.test.com

modules / proxy / mod_proxy_http.c

如果将日志级别提高到APLOG_DEBUG,您还会看到一条附加消息:proxy: read timeout也是。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.