【发布时间】:2018-09-09 02:03:06
【问题描述】:
我们有一个 Ruby on Rails 应用程序,它具有“搜索”功能(搜索某些公司)。从浏览器用户键入一些名称并点击搜索,然后此搜索对外部系统进行 rest api 调用并为我们提供一些搜索结果。
我们正在使用“rest-client”(用于 Ruby on Rails)。
我注意到这似乎工作了几个小时,突然我的搜索似乎突然中断了,我可以在我的日志中看到:
Errno::ECONNRESET:对等方重置连接
我们试图通过查看日志来调查此问题,但没有看到任何日志。
如果我们需要让这个搜索再次工作,我们需要重新启动乘客,然后它会立即工作。这仅在生产环境中发生。我在 staging 中进行了测试,它似乎运行良好。
问题:
- 是什么导致了这个“重置问题”
- 为什么在我的 prod 乘客重置时它又开始工作了。
- 我们使用reset-client应该写一个代码,当这个异常发生时手动关闭连接。
- 防火墙中的任何问题都可能导致此问题?
- 我可以在异常中放置任何代码来重新启动此连接,以便下一次调用成功。
代码:
def call
resp_data = RestClient.get(@request_url, @header)
rescue => error
puts 'Exception: ' error.message
end
【问题讨论】:
-
当我们从 rails 控制台 curl 或调用 APi 时,它可以正常工作而无需重新启动乘客。仅在发出浏览器请求时才会失败
-
请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
-
注意:在 Stack Overflow 上,对要求优先处理的问题在 7 小时内 +4 点赞是相当罕见的。因此,如果您的同事或您认识的其他人对此进行了有益的投票,请让他们停止 - 在这里相互投票被视为非常糟糕。
-
我也是。这个错误很奇怪。
标签: ruby-on-rails ruby passenger rest-client phusion