我有一个使用 rails 3.2 的应用程序,在 heroku 上运行并存储在 S3 上。用户可以选择上传照片,这些照片使用carrierwave/MiniMagick 处理成各种尺寸。
我们看到的问题是 30% 的时间,浏览器会超时。上传代码(最多可以上传四张图片)如下所示: 我正在使用carrierwave_backgrounder 来延迟图像处理,但我们仍然有超时。这是相当小的图像 - 通常是 150KB PNG。
mount_uploader :image1, ImageUploader
process_in_background :image1
mount_uploader :image2, ImageUploader
process_in_background :image2
mount_uploader :image3, ImageUploader
process_in_background :image3
mount_uploader :image4, ImageUploader
process_in_background :image4
这是我们看到的错误
app[web.1]: Started POST "/offices" for 197.16.140.27 at 2013-05-23 23:32:18 +0000
app[web.1]: E, [2013-05-23T23:32:49.042937 #2] ERROR -- : worker=0 PID:10 timeout (31s > 30s), killing
同样的事情发生在瘦身和独角兽身上。
我所做的阅读表明我应该直接上传到 S3,但随后图像处理被延迟,这对我来说是一个问题(延迟/复杂性)。我应该做些什么不同的事情?