图片上传问题

你好,

我认为这个修复 FIX: automatically timeout long running image magick commands (#12670) · discourse/discourse@5deda5e · GitHub 导致多图上传功能失效。如果我尝试上传 3 张、每张约 5-6MB 的图片,上传就会失败,每次都会显示此错误。我认为是因为 20 秒超时导致的。

lib/discourse.rb:93:in 'exec': 将 PNG 转换为 JPG 时发生错误。

谢谢 :slight_smile:

在这个网站上会失败吗?你能试着上传图片吗(前提是内容适合儿童)

我们需要在这里设定一个限制,时长不能超过20秒太多。

1 个赞

嗨,Sam,
上次我尝试时也在同一位置失败了,因此我将其归类为 bug,但这次上传成功了。在我的网站上,每次都会失败。照片大小约为 6MB。

这有点棘手,我想在本地调试。你能上传一张原始图片让我下载吗?这样我就能测试各种 ImageMagick 命令的耗时。

我可以考虑添加一个“更长的超时时间”站点设置,但我有点担心,将这张简单的 PNG 图片转换为 JPG 竟然需要超过 10 秒。

3 个赞

谢谢!我已将一些图片上传到 Mega File folder on MEGA

能否确认您使用的是标准 Docker 安装?

我刚刚测试了您上面提供的一个镜像,我们在容器内运行了两条命令:

timeout -k 10.0 5 identify -format %Q image.jpg

以及

timeout -k 40.0 20 convert jpeg:original.jpg -auto-orient -background white -interlace none -flatten -quality 90 jpg:/tmp/target.jpg

在我的本地系统上,第一条命令耗时 0.27 秒(允许时间为 5 秒)。
第二条命令耗时 1.3 秒(允许时间为 20 秒)。

能否请您提供更多关于您的安装环境的信息,以及运行该环境的服务器性能详情?

1 个赞

谢谢 Sam 的核查。是的,这是标准的 Docker 安装。昨天我升级了服务器,因为之前整个网站运行非常缓慢……并且重新构建了。服务器升级后现在运行正常,刚刚测试过。Digital Ocean 推出了新方案,大约两个月前引入了 Premium Intel CPU,而我们要用的 Regular 方案性能则大幅减弱。

旧服务器 :arrow_down_small:
Basic - 共享 CPU 2 vCPU 4 GB 60 GB

新服务器 :arrow_down_small:
Basic - Premium Intel 共享 CPU 2 vCPU 4 GB 60 GB

抱歉发了这个主题,其实 20 秒就足够了。再次感谢!:slightly_smiling_face:

1 个赞

是的,我认为我们这里的处理方式是正确的。

如果我们不设置超时,这些配置较低的实例就极有可能被用户上传大量图片的用户占满资源。20 秒对于图片调整大小任务来说,已经是非常充裕的 CPU 时间了。

3 个赞

本主题已在 15 小时后自动关闭,不再接受新回复。