我在我的 Ruby on Rails 应用程序(v2.3.8)中使用了collectiveidea 的delayed_job,并在8GB RAM Slicehost 机器(Ubuntu 10.04 LTS,Apache 2)上运行了大约40 个后台作业。
假设我在没有工作人员运行的情况下通过 ssh 进入我的服务器。当我这样做时free -m
,我发现我通常使用 8 个 RAM 中的大约 1GB。然后在启动工作人员并等待大约一分钟让代码使用它们之后,我最多使用大约 4GB。如果我在一两个小时后回来,我将达到 8GB 并进入交换内存,我的网站将产生 502 错误。
到目前为止,我一直在杀死工人并重新启动他们,但我宁愿解决问题的根源。有什么想法吗?这是内存泄漏吗?或者,正如朋友建议的那样,我是否需要找出一种运行垃圾收集的方法?