1

我在 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

谢谢!

4

1 回答 1

1

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

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

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

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

于 2013-04-08T09:39:06.663 回答