我正在尝试调试我们的环境中发生的一个非常奇怪的问题。
我有一个正在运行的 Rails 应用程序,当它连接的服务器由于某种原因被挂起ree-1.8.7-2011.12
时表现出奇怪的行为(要挂起它,然后在前台启动 ES 服务器),Ruby 进程永远挂起并且不会超时或类似的东西。如果 ES 服务器在 Rails 应用程序第一次连接之前挂起,则不会发生这种情况,只有当 Rails 应用程序运行一些查询然后 ES 服务器决定停止响应请求时才会发生这种情况。ElasticSearch
CTRL-Z
由于我对本机代码不是很好,我什至不知道从哪里开始尝试解决这个问题(是的,不幸的是,由于许多原因,我们现在无法升级我们的 Ruby)。进入活动监视器并获取进程示例,我得到了这个线程转储:
所以它似乎在这个curl_wait_for_resolv
电话上被锁定了。
我正在为 Ruby 使用最新的 ElasticSearch 和 Rubberband ES 适配器。这可以在 Mac OS 和 Linux 上重现。
关于如何调试或正确超时服务器的任何提示?