ruby-on-rails - 升级到 Ruby 2.5.3 后 Rails Net::OpenTimeout 执行过期
问题描述
在我们的生产应用程序从 Ruby 2.3.6 更新到 Ruby 2.5.3 后一秒(我们使用的是 Rails 5.2.0),我们开始在异常监控平台中收到 Net::OpenTimeout 警报。
我们隔离了 Ruby 升级的部署(只是在.ruby-version
Gemfile 中更改了 ruby 版本),以便我们可以查明 ruby 版本更改的任何新问题。
Ruby 2.5.3 是使用 rvm 安装的。
我们使用 mandrill 发送电子邮件,他们的支持团队说他们的平台一切正常,我们相信这是真的,因为如果在第二次部署完成后就开始出现异常情况,那太巧合了。
我们正在使用 Sidekiq,因此在作业失败后,它们会进入重试队列,并最终在它们成功时重新启动。这是非常随机的,但现在我们几乎 70% 的邮件在 Sidekiq 中第一次失败,然后才在第二次或第三次尝试时发送。
这是我们的山魈配置:
{
address: 'smtp.mandrillapp.com',
authentication: :plain,
user_name: 'ouruser@name.com',
port: 2525,
password: 'thisIsNotOurRealPassword',
domain: 'ourdomain.com'
}
更新:麻烦更加灾难性,因为我们的应用程序使用的每个出站连接(如外部 API)也以一种非常随机(但频繁)的方式超时,Net::OpenTimeout 执行过期。
坏消息是,即使我们使用 Ruby 2.3.6 重新部署,问题也不会消失。
解决方案
推荐阅读
- ios - iOS:删除 App Store Connect 中的 Test Flight 构建?
- node.js - 'ng build' 中止 - Angular
- ssl - XAMPP SSL 证书过期 - 如何修复
- swift - 删除 NSStatusBarButton 上的苍白效果
- utf-8 - ascii表中字符的大小如何
- nginx - Nginx proxy_pass 通过 2 个服务器和自定义标头“丢失”
- swift - 具有 Unicode 组合字符的 Swift 自定义运算符
- r - 如何在R中乘以矩阵的子集
- math - 如何创建具有约束行和列的遗传算法子代的 N-Queens 问题?
- java - 如何使用数组列表的值更改矩阵的索引?