【问题标题】:Mongrel cluster and multi-applications problemMongrel集群和多应用问题
【发布时间】:2010-09-16 05:32:40
【问题描述】:

我们正在处理这个问题。我们正在使用网络服务(使用soap4r)来运行某种搜索,当网络服务服务器关闭并且我们的应用程序试图连接到它时,问题就会出现。 此时应用程序无法访问,所有客户都被阻止。

我们可以做些什么来避免这种情况?是否有可能阻止到它被阻止的杂种的路由? (我想apache的代理使用循环算法)

谢谢 罗伯托

【问题讨论】:

  • 您是否使用 mod_proxy 在 Apache 您的 Mongrel 服务器之间进行通信?

标签: ruby-on-rails apache mongrel soap4r


【解决方案1】:

在我看来,这可能更像是一个 mod_proxy 问题,而不是 Mongrel 或 Apache 的问题 - 您是否按照 here 的描述设置代理超时?

【讨论】:

    【解决方案2】:

    使用 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]
    

    您可以将其设置为使用适当的内容类型设置的 XML 文件,使静态文件看起来像一个基本上是“请等待 10 分钟并重试”的 Web 服务响应,可能具有可配置的等待时间。

    Capistrano's web:disable 任务可能对您有所帮助,因为它需要一个参数来确定站点将在多长时间内不可用,并在生成 maintence.html 文件时将其放入 HTML。

    【讨论】:

      【解决方案3】:

      您需要对 Soap4R 请求设置超时。将 connect_timeout 属性设置为相当小的值。这应该会导致在您的代码中处理异常,而不仅仅是让请求挂起。

      您还应该确保在 mod_proxy_balancer 配置中设置了超时。

      【讨论】:

        猜你喜欢
        • 2011-04-04
        • 2011-03-10
        • 1970-01-01
        • 2016-07-05
        • 2010-09-14
        • 1970-01-01
        • 2011-04-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多