|
|
1
5
我的理解是Ruby MRI不会将内存释放回操作系统。如果Sidekiq作业消耗大量内存,即使这些对象被垃圾回收,内存也只会被释放回Ruby,而不是操作系统。你应该尝试找到一种方法来让你的SIDKIQ任务消耗更少的内存,并且假设你的工作人员最终会分配你记忆消耗最大的工作所需的最大内存量。 |
|
|
2
2
嗨,我们也面临同样的问题。我研究了很多。吉姆说的 right . 是Ruby MRI处理资源。实际上你的sidekiq工作人员很重,或者他们正在执行很重的操作,我猜他们也在进行更多的对象分配。他们需要更多的资源ruby从操作系统中获取资源,然后将其用于sidekiq中执行的操作。它不会向操作系统释放内存。它使用相同的内存空间并重用它来为其他对象提供资源。 为了避免这个问题,你必须记住的是优化你的代码。
您可以在作业结束后运行GC.start以强制运行垃圾回收器以释放内存。 当你杀死一个sidekiq进程时,它会将内存释放给操作系统,因为进程是由ruby运行的,而你杀死了它,所以最终ruby会将内存释放给操作系统。 我希望这能有帮助。 你必须优化你的代码,这是由 mperham . |
|
cluster1 · 采取独立的新行动的好处是什么? 1 年前 |
|
|
Robert · 使用JSON或哈希时,将NULL替换为NIL 1 年前 |
|
|
Fred Willmore · Rails控制器不呈现任何模板 2 年前 |
|
|
Diogo Amaral · 实现API请求的正确方式 2 年前 |
|
|
Meknassih · 在控制器方法中分配给模型没有任何作用 2 年前 |
|
|
Michael Ding · Rails上的默认会话到期问题 2 年前 |
|
|
Flávio · 基于另外两个生成数组 2 年前 |