我在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