2012-04-18 63 views
1

我的应用程序正在交换到磁盘,因为它使用的是2.2 GB的内存。我无法弄清楚在我的应用程序中是什么导致它成为这样的内存猪。My Rails 3.1.3应用程序占用太多内存

这是一个RHEL5 VM,具有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? 

我深深感谢所有帮助任何人都可以提供!我不得不在晚上每隔两小时检查一次这个东西。不好玩!

UPDATE:

客车配置如下:

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红宝石特效注意到。

回答

1

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

感谢您的更新。

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

PassengerMaxPoolSize

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

+0

感谢您的快速回复!我发布了上面的配置。 – AKWF 2012-04-18 02:46:01

+0

我已经更新了我的回复 – 2012-04-18 03:09:06

+0

我们也使用NewRelic,他们新的服务器监控功能以及您的指针帮助我解决了这个问题。 23挂机架流程从谁知道什么时候开始。我将添加你提到的参数。再次感谢。 – AKWF 2012-04-18 03:12:08

1

如果您不能使用或NewRelic的没有钱为亲的计划,你可以尝试以下操作以找出与乘客的问题:

sudo /usr/local/bin/passenger-status 

查看哪些和多少进程属于哪个网站 - 非常有用的,如果服务从一台机器和

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

几个网站来查看服务参与 所有进程(阿帕奇+乘客+红宝石)内存的详细信息。

也可以像munin一样设置传统监控。有几个howtos监测与慕尼黑的乘客