我在Ruby on Rails中有一个Web应用程序。我们使用apcahe httpd启动的混合簇来运行应用程序。我们在应用程序中一直面临着巨大的内存消耗问题。 (RedHat,Ruby 1.8.7,Rails 2.3.5,RAM 8GB)在Rails应用程序中查找内存泄漏
事情是在我们启动web服务器(启动mongrel集群)后,内存使用量似乎在增加。例如,如果启动Web服务器时的空闲内存(RAM)为6GB。 2天后,即使在网站没有流量时,空闲内存也变为3GB。如果网络服务器没有重新启动一周,内存似乎会增加并且使用全部8GB内存,并导致使用“PrinceXML”的pdf生成过程中的“无内存分配”问题,使用sendmail发送邮件(我认为这些是记忆)。当Web服务器重新启动时,可用内存将回到6GB。
这是Rails应用程序中内存泄漏的情况吗?如何检查内存泄漏的应用程序?我找到了一个检查内存泄漏的工具bleak_house,但是当我把它安装成如this link所示的宝石时,当我运行'惨淡的/tmp/bleak.5979.000.dump'来分析时,它给出No command bleak found
。
我使用PrinceXML生成PDF报告和sendmail用于邮件发送目的。该服务器还有一个运行Jasper Server的实例。 任何人请帮助。
以下是内存过载时top命令的结果。
-bash-3.2$ top
top - 10:34:10 up 14 days, 7:40, 2 users, load average: 0.24, 0.40, 0.39
Tasks: 181 total, 1 running, 177 sleeping, 2 stopped, 1 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 8173984k total, 8011564k used, 162420k free, 10044k buffers
Swap: 2096472k total, 152624k used, 1943848k free, 2012016k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
858 **nt*rsc 15 0 12748 1168 832 R 173.5 0.0 0:00.36 top
1 root 15 0 10356 108 76 S 0.0 0.0 0:17.10 init
2 root RT -5 0 0 0 S 0.0 0.0 0:00.10 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.09 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root RT -5 0 0 0 S 0.0 0.0 0:00.12 migration/1
6 root 34 19 0 0 0 S 0.0 0.0 0:00.12 ksoftirqd/1
7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
8 root RT -5 0 0 0 S 0.0 0.0 0:00.70 migration/2
9 root 34 19 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/2
10 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/2
11 root RT -5 0 0 0 S 0.0 0.0 0:00.67 migration/3
12 root 34 19 0 0 0 S 0.0 0.0 0:00.11 ksoftirqd/3
13 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/3
14 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 events/0
15 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 events/1
16 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 events/2
ModRails似乎是答案,我们现在是有Rails中的所有部署问题......我一定会尝试出.. – rubyprince