2012-07-22 70 views
2

我在ubuntu VPS(1GB RAM)上运行rails应用程序(Passenger和nginx与mongodb和memcached)应用程序 - 几天后,我看到启动nginx后,尽管服务器上没有任何请求,但ruby进程缓慢占用了盒子的所有内存。 new_relic显示以下 enter image description hereRails应用程序占用了所有服务器内存

顶部输出

top - 12:02:23 up 2:47, 1 user, load average: 0.03, 0.02, 0.00 
Tasks: 16 total, 1 running, 15 sleeping, 0 stopped, 0 zombie 
Cpu(s): 0.1%us, 0.0%sy, 0.0%ni, 99.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 
Mem: 1048576k total, 1048576k used,  0k free,  0k buffers 
Swap:  0k total,  0k used,  0k free,  0k cached 

9993 mongodb 18 0 128m 29m 21m S 0 2.9 0:17.06 mongod                      
1135 nobody 18 0 71664 18m 856 S 0 1.8 0:00.55 memcached        
14310 passenge 15 0 500m 434m 4660 S 0 42.5 0:13.59 ruby 
15496 passenge 15 0 425m 360m 4648 S 0 35.3 0:13.06 ruby 

我觉得有一些代码泄漏内存 - 或者我需要时,他们到达某个阈值以某种方式杀死乘客昂贵的红宝石过程。 请分享这两个问题的一些想法。

回答

0

很难回答,因为没有太多的信息可以继续下去,所以我会相当一般地回答这个问题。显示随时间变化的内存使用情况的图形或显示响应时间降低的图形会很有帮助。

无论如何,我有一个类似的设置(Rails/Passenger/Nginx/MongoDB/VPS-1GB)。

  • 首先确认您的通过检查日志中没有任何要求的假设,确认没有请求(并确保记录在Nginx的被打开足够)

  • 尝试禁用New Relic的(因为这心跳到他们随着时间的推移服务器),并审查你有任何其他监测软件(如Nagios)。

  • 尝试一个免费的负载测试应用程序(例如,http://loadimpact.com),并观察你的内存/ GC和处理器图形,当它被积极负载测试。如果你看到内存使用量超过健康数量,你可以打赌你有内存泄漏的地方。

如果你发现自己做的,它实际上只是一个消除变量的事情 - 我会挂起的Rails在Nginx的,但你可以不带前端运行Rails,或关闭乘客,只是打所有的静态Nginx的资产来尝试找到原因。

希望这会有所帮助。

相关问题