从ruby2.3.6(我们在rails5.2.0上)将我们的产品应用程序升级到ruby2.5.3后一秒钟,我们就开始在异常监控平台上收到Net::OpenTimeout警报。
.ruby-version
和Gemfile),这样我们就可以找出ruby版本变更的任何新问题。
Ruby2.5.3是使用rvm安装的。
我们使用的是Sidekiq,所以当作业失败后,它们会进入重试队列,最终会重新启动,当它们成功时。这是非常随机的,但是现在我们有将近70%的邮件发送者第一次在Sidekiq中失败,只有在第二次或第三次尝试时才会被发送。
下面是我们的mandrill配置:
{
address: 'smtp.mandrillapp.com',
authentication: :plain,
user_name: 'ouruser@name.com',
port: 2525,
password: 'thisIsNotOurRealPassword',
domain: 'ourdomain.com'
}
:问题更加严重,因为我们的应用程序使用的每个出站连接(如外部API)也会以非常随机(但频繁)的方式超时,Net::OpenTimeout执行过期。
坏消息是,即使我们使用Ruby2.3.6重新部署,问题也不会消失。