我正在运行已部署的rails网络服务器,而且我遇到了内存问题。每次我尝试调用sendmail时都会收到Errno :: ENOMEM错误。当我在我的服务器上运行“top”时,它向我显示正在运行2个ruby1.8进程,每个进程消化大约40%的内存。这是由我的代码泄漏引起的,还是我同时启动了两个ruby进程?
这两个进程都由我的部署者帐户运行,然后在我推送到我的生产git存储库(使用pushand)时调用它们。我试图找出这是否自然(即服务器需要升级)或者我的设置中是否有某种错误。我最近将RAM从256 mb升级到512 mb,之前没有遇到过这个问题。
问题是阻止访问者创建用户,因为应用程序在收到激活电子邮件时会抛出错误。
请注意,我在ubuntu设置上使用apache和passenger运行rails 2.1.0。
答案 0 :(得分:2)
我通过我的服务器登录。 ssh并在两个屏幕窗口中运行两个命令:top和tail -f /var/www/mysite.com/log/production.log。
我查看了实时日志文件并注意到需要花费很长时间才能加载的页面请求 - 用户可以显示他/她的图像的页面,其中每个用户都通过其名称来识别。 acts_as_taggable_on。这个单一请求花了6秒钟。
它一直在冒出来。我想我看了6到7次,我决定进一步调查。它始终是相同的用户ID,所以我决定查找用户。事实证明,用户有一个空白名称“”,标记的图像可以通过
找到Asset.tagged_with(@user.name, :on => "users")
现在在我的应用程序中,有数以万计的资产,而Asset.tagged_with(“”,:on =>“用户”)将返回所有这些资产,从而耗尽我的记忆。
现在我已经处理了用户名称空白并且所有新用户都需要它的情况。即使没有人帮忙,我仍然对stackoverflow感到有些感激,因为有时它就像问问题来解决问题一样简单。