【发布时间】:2011-03-16 11:39:54
【问题描述】:
我正在运行已部署的 Rails 网络服务器,但遇到内存问题。每次我尝试调用 sendmail 时都会收到 Errno::ENOMEM 错误。当我在我的服务器上运行“top”时,它显示有 2 个 ruby1.8 进程正在运行,每个进程都在消化大约 40% 的内存。这是由我的代码泄漏引起的,还是我同时启动了两个 ruby 进程?
这两个进程都由我的部署者帐户运行,然后在我推送到我的生产 git 存储库(使用 pushand)时调用它们。我试图找出这是否是自然的(即服务器需要升级)或者我的设置是否存在某种错误。我最近将我的内存从 256 mb 升级到了 512 mb,之前没有这个问题。
问题是阻止访问者创建用户,因为应用程序在他们应该收到激活电子邮件时抛出错误。
请注意,我在 ubuntu 设置上运行 rails 2.1.0,带有 apache 和乘客。
【问题讨论】:
-
当我重新启动 apache 内存使用量急剧下降。我已将 PoolIdleTime 设置从 1 天减少到 300 秒,因此乘客进程会时不时地被杀死。
-
我也在研究 Rack::Bug、Oink 和 Memorylogic。我发现link 非常有用。
-
问题仍然存在。我会尝试和优化领域,如果找到答案,我会回到这里。
-
内存使用率很快就上升到 80%(现在是 3 个进程)。
标签: ruby-on-rails ruby ubuntu passenger