【问题标题】:Timeout error from unicorn while uploading a file上传文件时来自独角兽的超时错误
【发布时间】:2013-10-02 20:51:15
【问题描述】:

我在 Heroku 上使用独角兽。我遇到的问题之一是文件上传。我们使用 carrierwave 进行上传,基本上,即使是大约 2MB 大小的文件,当上传完成 50-60% 时,Unicorn 就会超时。

当我们在本地进行测试时,我们没有使用 unicorn,而且我对本地的大文件没有任何问题(尽管文件是使用 carrierwave 上传到 AWS 的,就像使用生产 + 登台一样)。但是,在登台和生产服务器上,我看到我们遇到了超时。

有解决此问题的策略吗?我不确定我是否可以将此文件上传延迟作业(因为我需要向我的用户确认文件确实已成功上传)。

谢谢! 林哥

【问题讨论】:

  • 你可以尝试在本地使用独角兽吗?

标签: ruby-on-rails carrierwave unicorn


【解决方案1】:

如果您通过 Heroku 将大文件上传到 S3,则无法合理地避免超时。如果有人决定上传一个大文件,它就会超时。如果上传到 Heroku、传输到 S3 并处理的时间超过 30 秒,则请求将超时。也有充分的理由,30 多岁的请求只是糟糕的表现。

这篇博文(和 github repo)非常有帮助:http://pjambet.github.io/blog/direct-upload-to-s3/

有了它,您应该能够进行直接到 s3 的文件上传工作。您完全避免在上传的大部分内容中使用 Heroku。使用 jquery-fileupload 的回调,您可以在文件上传成功后发布到您的应用程序,并使用延迟作业在后台处理它。向您的用户确认上传成功是您只需要处理的应用程序问题。

【讨论】:

    【解决方案2】:

    听起来你的超时设置太低了。你的独角兽配置是什么样的?

    请参阅https://devcenter.heroku.com/articles/rails-unicorn 以获得良好的起点。

    【讨论】:

    • 我的独角兽超时时间是 15,增加到 30,但没有区别。我更愿意设计一个不依赖于增加超时的解决方案。
    猜你喜欢
    • 2012-09-17
    • 2012-05-27
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2014-12-31
    相关资源
    最近更新 更多