我们正在这个问题中运行。我们正在使用Web服务(使用soap4r)来运行某种搜索,当Web服务服务器关闭并且我们的应用程序尝试连接到它时,就会出现问题。此时,应用程序无法访问,并且所有客户都被阻止。
我们能做些什么来避免这种情况?是否有可能阻止路由到,它被阻止了?(我想 apache 的代理使用循环算法)
谢谢罗伯托
这听起来可能比Mongrel或Apache更mod_proxy问题 - 您是否按照此处所述设置代理超时?
使用 mod_rewrite 来重新生成一个错误页面,该页面对 Web 服务客户端比 Apache 的代理超时错误更有用。 例如,如果存在,此 Apache 配置将呈现maintence.html
。 因此,您所要做的就是将文件放入,服务器将自动处于维护模式。
# Check for maintenance file and redirect all requests
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /system/maintenance.html [L]
您可以使其成为使用适当的conent类型设置的XML文件,使静态文件看起来像Web服务响应,本质上是"请等待10分钟,然后重试",可能具有可配置的等待时间。
Capistrano的web:disable 任务可能对您有所帮助,因为它需要参数来说明网站将不可用多长时间,并在生成maintence.html
文件时将其放入 HTML 中。
Soap4R 请求设置超时。将 connect_timeout 属性设置为相当小的值。 这应该会导致在代码中处理异常,而不仅仅是使请求挂起。
您还应该确保在mod_proxy_balancer配置中设置超时。