1

我的应用程序正在交换到磁盘,因为它使用了 2.2 GB 的内存。我无法弄清楚我的应用程序中是什么导致它如此占用内存。

这是一个 RHEL5 虚拟机,具有 2 GB 的 RAM。

Rails 是 3.1.3 版。

我在 nginx v1.0.10 中的网络服务器,使用 Phusion Passenger 版本 3.0.11。

就其内存占用而言,“ruby”进程似乎完全摆脱了困境。

该应用程序是一个相对简单的产品目录。服务器在内存不足时大约每天崩溃两次。我也在使用 memcached v1.4.4。

当 Rails 缓存最终无法建立更多内存时,它会导致崩溃。

我不知道要采取什么步骤来确定为什么我的应用程序占用空间如此之大。

会不会是:

1) Some gems being loaded into memory?
2) A faulty or insufficient Passenger setup in my nginx.conf file?
3) Something else?

我非常感谢任何人可以提供的任何帮助!我必须在晚上每两个小时检查一次这个东西。不好玩!

更新:

乘客配置如下:

server {
  listen 80;
  client_max_body_size 4M;
  server_name www.myapp.net myapp.net *.myapp.net;
  root /usr/code/mcp5/public;   # <--- be sure to point to 'public'!
  passenger_enabled on;
  passenger_min_instances             5;
  rails_env                           production;
  rails_framework_spawner_idle_time   0;
  rails_app_spawner_idle_time         0;
}

我还在我的日志记录实用程序中注意到,这个东西正在快速旋转到 20 多个 ruby​​ procs。

4

2 回答 2

1

您的乘客配置是什么样的?对于可用的资源,您可能有太多线程。

感谢更新。

尽管我们的服务器比您的服务器拥有更多的资源,但我们仍然使用以下指令。

乘客最大池大小

尝试将其设置为 10 以开始并执行负载测试。这至少应该阻止应用程序杀死您的服务器。然后我会花更多时间尝试确定瓶颈在哪里。我们使用Newrelic进行性能监控。希望这会有所帮助

于 2012-04-18T02:41:09.170 回答
1

如果您不能使用 NewRelic 或没有钱购买专业计划,您可以尝试以下方法来查明乘客的问题:

sudo /usr/local/bin/passenger-status

查看哪些进程属于哪个站点以及有多少进程 - 如果从一台机器服务多个站点并且

sudo /usr/local/bin/passenger-memory-stats

查看服务中涉及的所有进程的详细内存信息(apache +passenger + ruby​​)。

也可以像munin一样设置传统的监控。有几种使用munin监控乘客的方法

于 2012-04-18T10:26:37.097 回答