【发布时间】: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