Rails 3.0间歇性连接超时,执行过期错误

时间:2011-09-01 13:12:48

标签: ruby ruby-on-rails-3 debugging amazon-ec2

我们在四个Amazon EC2实例(一个负载均衡器,一个数据库和两个应用程序)上,并且不断获得随机超时。我们每天至少有一次,有时甚至更多。以下是一些例子:

Errno::ETIMEDOUT: Connection timed out - connect(2)
/usr/local/rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/net/smtp.rb:546:in `initialize'

Timeout::Error: execution expired
[GEM_ROOT]/gems/activemodel-3.0.9/lib/active_model/attribute_methods.rb:354:in `match'

我不确定如何调试它们,因为它们与应用程序代码或服务器负载无关。 CPU使用率通常徘徊在10%以下,最大峰值上升至60%。峰值很可能是由于运行备份而导致的,与超时错误的时间不符。

如何追踪这些类型的错误?

1 个答案:

答案 0 :(得分:3)

第一个超时看起来像是通过SMTP发送邮件的合法连接超时。您是托管自己的SMTP服务器还是使用服务?

在过去的几天里,sendgrid看起来像experiencing delays/timeouts

  

我们目前在队列中看到很多音量,电子邮件可能会在短时间内延迟。请继续关注更新。 #status

修复SMTP服务超时/失败

设置一个本地邮件中继,如果发生此类故障,将保留邮件并重新发送。我们在生产中使用本地Postfix中继来解决这个问题(因此ActiveMailer使用sendmail到Postfix,它将邮件排队并通过SMTP中继传送到Sendgrid)。