我已经将Apache2设置为红角角提供的多个python应用程序的前端服务器。我使用Apache2设置的mod_proxy如下所示:
<VirtualHost *:80>
ServerName example.com
UseCanonicalName On
ServerAdmin webmaster@localhost
LogLevel warn
CustomLog /var/log/apache2/example.com/access.log combined
ErrorLog /var/log/apache2/example.com/error.log
ServerSignature On
Alias /media/ /home/example/example.com/pysrc/project/media/
ProxyPass /media/ !
ProxyPass / http://127.0.0.1:4711/
ProxyPassReverse / http://127.0.0.1:4711/
ProxyPreserveHost On
ProxyErrorOverride Off
</VirtualHost>通常情况下,这个设置工作得很好。不过,我有一个问题:当我重新启动gunicorn进程(耗时2-5秒),并且有来自Apache的请求时,该请求将失败,出现503个错误。到目前一切尚好。但是Apache继续返回503个错误,即使在gunicorn进程恢复之后也是如此。只有在Apache完全重新启动之后,它才会从代理服务器恢复服务内容。
有办法绕过这种行为吗?
发布于 2011-05-07 18:29:17
将retry=0添加到您的ProxyPass行:
ProxyPass / http://127.0.0.1:4711/ retry=0来自国防部_代理文档:
连接池工作人员重试超时(以秒计)。如果指向后端服务器的连接池工作人员处于错误状态,则在超时过期之前,Apache将不会向该服务器转发任何请求。这样可以关闭后端服务器以进行维护,并在稍后将其恢复联机。值为0意味着始终在没有超时的情况下重试处于错误状态的工作人员。
发布于 2011-05-07 06:46:56
你是按照记录的方法重新启动火鸟吗?
我建议一种简单的方法。如果在您的环境中2-5秒是可以接受的停机时间,那么我可以建议在您重新启动gunicorn服务之后立即重新启动Apache服务吗?
在生产环境中,我建议使用HAProxy而不是Apache作为前端,您可能会有更好的运气。
https://serverfault.com/questions/265199
复制相似问题