在服务器中生成水印期间内存使用率过高时 Sidekiq 终止

Sidekiq terminated when high memory usage during generating watermark in server

我正在使用的服务器 运行 在 4gb 内存上...

每张上传的图片都会有水印,所以我决定放在后台处理。但是当有很多上传图片的请求时..服务器会面临高内存问题,内存不会自行释放。

我的问题: - 为什么 sidekiq worker 终止? - 是 rmagick 内存泄漏吗? - 如何处理这种情况?

您提供的详细信息远不足以让我们为您提供明智的建议,但我会尝试一些一般性的问题:您有多少 Sidekiq 员工 运行?考虑减少#,然后排队成吨的请求来模拟重负载;继续这样做,直到你的 worker 数量足够少,Sidekiq 可以轻松处理最糟糕的负载。 (或者直到您确认即使只有 1 个 Sidekiq 工作人员,问题仍然出现!)

一旦你这样做了,你就会对问题的轮廓有更好的感觉:当你的服务器过载时,看起来像 Rmagick 内存泄漏问题的东西,可能看起来不同(或者给你更多关于如何解决它的想法)当你减少工作量时。

另请参阅 this similar SO question 关于 Rmagick 和内存泄漏的内容;可能值得强制垃圾收集来限制任何给定泄漏可能造成的损害程度。