尝试使用Rubberband连接到已挂起的ElasticSearch服务器会永远挂起,永远不会返回

时间:2012-09-08 14:07:16

标签: ruby http sockets timeout elasticsearch

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

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

由于我对原生代码不太好,我甚至不知道从哪里开始试图解决这个问题(是的,不幸的是,我们现在无法升级我们的Ruby有很多原因)。进入活动监视器并获取进程的示例我得到此线程转储:

enter image description here

所以它似乎已被锁定在此curl_wait_for_resolv来电。

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

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

1 个答案:

答案 0 :(得分:0)

问题出在Rubberband,我有filed a pull request