Rails 内存泄露检测:实践二

Posted by devon on January 9th, 2008 filed in 部署与优化

服务器一环境:

1
2
3
4
5
6
7
8
9
10
<code>
rails2@server:~$ cat /proc/version
Linux version 2.6.16.29-xen (shand@endor) (gcc version 3.4.4 20050314 (prerelease) (Debian 3.4.3-13)) #3 SMP Sun Oct 15 13:15:34 BST 2006
rails2@server:~$ ruby -v
ruby 1.8.6 (2007-03-13 patchlevel 0) [x86_64-linux]
rails2@server:~$ gem -v
0.9.4
rails2@server:~$ rails -v
Rails 2.0.2
</code>

启动工程后,development 模式下:

1
2
3
4
<code>
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12661 rails2 16 0 99040 49m 2308 S 0 4.9 0:03.74 ruby
</code>

访问一千次首页:


seq 1000 | xargs -i curl –silent http://localhost:7010 > \dev\null

之后该进程的内存消耗情况:

1
2
3
<code>
12661 rails2 16 0 118m 69m 2848 S 0 6.8 2:40.71 ruby
</code>

访问一万次首页:


seq 10000 | xargs -i curl –silent http://localhost:7010 > \dev\null

之后该进程的内存消耗情况:

1
2
3
<code>
12661 rails2 16 0 343m 294m 2848 S 0 28.8 36:11.31 ruby
</code>

后期的持续访问会导致内存消耗不断上升。

Production 模式下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<code>
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27822 rails2 16 0 98840 49m 2308 S 0 4.9 0:04.43 ruby
 
seq 1000 | xargs -i curl –silent http://localhost:7010 &gt; \dev\null
 
27822 rails2 16 0 102m 53m 2840 S 14 5.3 0:26.97 ruby
 
10000
27822 rails2 16 0 110m 62m 2840 S 0 6.1 2:54.53 ruby
 
100000
27822 rails2 16 0 187m 138m 2840 S 0 13.6 25:55.28 ruby
</code>

服务器二环境:

1
2
3
4
5
6
7
8
9
10
<code>
rails2@server:~$ cat /proc/version
Linux version 2.6.9-42.0.10.ELsmp (mockbuild@builder7.centos.org) (gcc version 3.4.6 20060404 (Red Hat 3.4.6-3)) #1 SMP Tue Feb 27 10:11:19 EST 2007
rails2@server:~$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-linux]
rails2@server:~$ gem -v
1.0.1
rails2@server:~$ rails -v
Rails 2.0.2
</code>

服务器二,production 模式下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<code>
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
669 app 16 0 54188 39m 3568 S 0 3.9 0:04.06 mongrel_rails
 
seq 1000 | xargs -i curl –silent http://localhost:6000 &gt; \dev\null
 
669 app 16 0 54320 39m 3568 S 0 3.9 0:15.64 mongrel_rails
 
seq 10000 | xargs -i curl –silent http://localhost:6000 &gt; \dev\null
 
669 app 16 0 55288 40m 3568 S 0 4.0 2:16.58 mongrel_rails
 
seq 100000 | xargs -i curl –silent http://localhost:6000 &gt; \dev\null
 
669 app 15 0 68320 53m 3568 S 0 5.3 23:06.61 mongrel_rails
</code>

表现还算基本稳定。

Written by Devon. Copyright by enjoyrails.com

Related posts:

  1. Rails 内存泄露检测:实践一 在服务器运行在development模式下式,发现mongrel进程所占用的内存迅速上升,怀疑文件上传引起内存泄露(项目中有大文件上传的应用),以下是测试过程。 服务器环境: rails2@server:~$ cat /proc/version Linux version 2.6.16.29-xen (shand@endor) (gcc...

Related posts brought to you by Yet Another Related Posts Plugin.

Leave a Comment