【问题标题】:Intermittent H12 timeout on Heroku when uploading small files to S3 w/ carrierwave_direct将小文件上传到 S3 w/carrierwave_direct 时 Heroku 上的间歇性 H12 超时
【发布时间】:2013-02-25 15:45:09
【问题描述】:

我在 Heroku 上运行一个 rails 3.2.11 应用程序,遇到了一个我无法解决的间歇性问题。

我有一个模型,其中包含用户上传的文件。该文件通常约为 300-400Kb。当用户尝试创建或编辑此模型并上传文件时,我在生产中看到了一个问题,我定期收到 h12 超时错误。很难重新创建错误,因为当我测试它几乎所有时间都可以正常工作,包括高达 10mb,因此问题似乎并不直接取决于文件大小。

我正在使用carrierwave_direct gem 直接上传到S3。我开始使用carrierwave gem 并切换到carrierwave_direct,希望它能解决问题。我没有对文件进行任何后处理,我只需要上传它。

我在 prod 中重新创建了这个错误,除了我自己之外,服务器上没有其他用户,所以它似乎也不是交通问题。

heroku 日志条目示例:

at=error code=H12 desc="Request timeout" method=POST dyno=web.1 queue=0ms wait=0ms connect=1ms service=33605ms status=503 bytes=0

谢谢!

【问题讨论】:

  • 你试过类似 railscast 中解释的吗?

标签: ruby-on-rails heroku amazon-s3 ruby-on-rails-3.2 carrierwave


【解决方案1】:

Heroku 会超时超过 30 秒的请求 - 这始终是上传问题。

使用 Amazon S3,您可以直接上传而无需通过 Heroku,并在上传完成后将响应传递给 Heroku,从而完全绕过 Heroku 的超时 - 您需要查看 Rackspace 是否提供此类功能。

http://railscasts.com/episodes/383-uploading-to-amazon-s3

以上链接将帮助您在carrierwave_direct和后台作业的帮助下在s3上上传图片

【讨论】:

  • 正如我在问题中所说,我已经在使用 carrierwave_direct gem 上传到 S3。
  • + 使用一些后台作业,因为它似乎仍然需要超过 30 秒
猜你喜欢
  • 2011-12-12
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多