ruby - Rails 3.0 间歇性连接超时、执行过期错误

标签 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%。峰值很可能是由于运行备份造成的,并且与超时错误的时间不对应。

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

最佳答案

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

看起来 sendgrid 已 experiencing delays/timeouts最近几天:

We're currently seeing lots of volume in our queues and emails may be delayed for a short period. Stay tuned for updates. #status

修复 SMTP 服务超时/失败

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

关于ruby - Rails 3.0 间歇性连接超时、执行过期错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7270824/

相关文章:

ruby-on-rails - 为不同的用户配置文件设计具有多态关联的用户

ruby - Array.reject!(& :empty? ) 删除非空白对象

ruby-on-rails - 如何将 ruby​​ 命令提示符插入 ruby​​ 我的?

ruby-on-rails - Rails 3 路由到错误的 Controller

objective-c - XCode Debugger( Debug模式项目)在某一行没有断点停止,Profiler 在同一行崩溃

ruby - Rake 和 Ansible 有什么区别?

ruby-on-rails - Rails,simple_form,如何在页面加载时设置集合的选定索引?

ruby - 根据请求重新加载 rails.root/app/resources/*

java - 调试器抛出 "Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=gasp"错误

c# - 诊断 ObjectDisposedException "Safe handle has been closed"