0

几个月前,我终于将 Heroku 上的 Rails 应用程序升级到了 Cedar 堆栈和 Rails 3.2。由于 Cedar 文档中建议了它,因此我使用这一行创建了一个初始化程序Rack::Timeout.timeout = 20。很长一段时间内一切正常,但在过去的一周里,我突然开始遇到许多Timeout::Error: execution expired错误和相关NoMethodError: undefined method 'result' for #<Timeout::Error: execution expired>错误。

所有错误都出现在网站的普通部分,显示来自数据库的基本内容,没有任何交互操作正在进行,在正常情况下可能需要接近 20 秒才能处理。

当流量增加到我需要更多测功机的地步时会发生这种情况吗?您可以就这些神秘错误的来源提供任何建议,我们将不胜感激。

我最近对网站所做的一些更改:

  • 从 Heroku Dev db 升级到 Heroku Basic db
  • 在我的 gemfile 中明确定义了 Ruby 版本ruby '1.9.2'
  • 添加 IronWorker(来自 iron.io)来执行一些后台任务(仅限管理员,而不是看到错误的日常用户)我正在config/application.rb使用以下行进行设置:config.iw_client = IronWorkerNG::Client.new(:token => iw_conf['iron']['token'], :project_id => iw_conf['iron']['project_id'])

更新:我检查了 New Relic,Heroku Basic DB 性能存在一个极端问题。在过去的 24 小时内,数据库响应时间一直徘徊在 1000 毫秒到 6000 毫秒的高端。这是我的错误,还是 Heroku 的问题?

4

0 回答 0