4

我有一个使用 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,但随后图像处理被延迟,这对我来说是一个问题(延迟/复杂性)。我应该做些什么不同的事情?

4

2 回答 2

2

John 是正确的:当您直接上传到 heroku 时会发生这种情况。我在这里写了一些处理 heroku 上传的策略。

于 2013-05-24T14:04:58.263 回答
1

这是上传的常见问题,只能通过直接上传到 S3 并在完成后执行处理来解决。您遇到的问题是用户连接速度,如果来自手机,与从快速互联网上的某人上传的相同文件相比,它需要 30 多秒的时间。您根本没有做错任何事情,恐怕不同的服务器也不会有所作为。

于 2013-05-24T07:29:56.827 回答