【问题标题】:Trying to connect to a suspended ElasticSearch server using Rubberband hangs forever and never returns尝试使用 Rubberband 连接到暂停的 ElasticSearch 服务器会永远挂起并且永远不会返回
【发布时间】:2012-09-02 02:59:32
【问题描述】:

我正在尝试调试我们的环境中发生的一个非常奇怪的问题。

我有一个在 ree-1.8.7-2011.12 上运行的 Rails 应用程序,当它连接的 ElasticSearch 服务器由于某种原因被挂起时表现出奇怪的行为(要挂起它,请在前台启动 ES 服务器然后 CTRL-Z 它),Ruby 进程将永远挂起并且不会超时或类似情况。如果 ES 服务器在 Rails 应用程序第一次连接之前暂停,则不会发生这种情况,它只会在 Rails 应用程序运行一些查询然后 ES 服务器决定停止响应请求时发生。

由于我对本机代码不太擅长,我什至不知道从哪里开始尝试解决这个问题(是的,很遗憾,由于许多原因,我们现在无法升级我们的 Ruby)。进入活动监视器并获取进程示例,我得到了这个线程转储:

所以它似乎在这个 curl_wait_for_resolv 调用时被锁定了。

我正在为 Ruby 使用最新的 ElasticSearch 和 Rubberband ES 适配器。这可以在 Mac OS 和 Linux 上重现。

关于如何调试或正确超时服务器的任何提示?

【问题讨论】:

    标签: ruby http sockets timeout elasticsearch


    【解决方案1】:

    问题出在 Rubberband,我有 filed a pull request 处理它。

    【讨论】:

      猜你喜欢
      • 2018-09-27
      • 2019-12-21
      • 1970-01-01
      • 2021-08-05
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 2015-02-06
      • 2015-10-03
      相关资源
      最近更新 更多