apache,phusion passenger和memory usage

时间:2013-07-11 22:16:57

标签: ruby apache ubuntu passenger ram

我在某处读到了这篇文章:

“使用普通的Apache服务器,如果运行许多子进程并不重要 - 每个进程大约1 MB(大部分共享),因此它们不会占用大量RAM。与mod_perl不同,其中进程可以轻松增长到10 MB甚至更多。例如,如果MaxClients设置为50,则内存使用量变为50×10 MB = 500 MB。你有500 MB的RAM专用于mod_perl服务器?“

我没有在我的服务器上使用mod_perl。我正在使用apache2在轨道上使用phusion乘客和红宝石。我正在使用prefork MPM,并且MaxClients设置为默认值256.这意味着我可以在任何给定时间同时运行256个进程。这篇文章激起了我的兴趣,因为我从来没有同时运行256个apache2进程,通常我在任何给定时间只运行80个apache2进程。但有时甚至只有80次陷入我的服务器,当你试图加载它时网站就会挂起。

当我运行以下命令时,它有时会显示80个apache2进程,例如:

ps aux | grep apache2
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1130  0.0  0.1 149080 10600 ?        Ss   12:36   0:00 /usr/sbin/apache2 -k start
www-data  2051  0.0  0.3 163608 23592 ?        S    16:46   0:00 /usr/sbin/apache2 -k start
www-data  2506  0.0  0.1 149376  7952 ?        S    16:47   0:00 /usr/sbin/apache2 -k start
www-data  5149  0.0  0.1 149416  7980 ?        S    16:49   0:00 /usr/sbin/apache2 -k start
www-data  5175  0.0  0.1 149368  7876 ?        S    16:49   0:00 /usr/sbin/apache2 -k start
www-data 10212  0.0  0.1 149368  7848 ?        S    16:53   0:00 /usr/sbin/apache2 -k start
www-data 19114  0.0  0.1 149368  7904 ?        S    17:01   0:00 /usr/sbin/apache2 -k start
www-data 19138  0.0  0.1 150768 11856 ?        S    17:01   0:00 /usr/sbin/apache2 -k start
www-data 20592  0.0  0.1 149428  8092 ?        S    16:35   0:00 /usr/sbin/apache2 -k start
www-data 21336  0.0  0.1 149368  7808 ?        S    17:03   0:00 /usr/sbin/apache2 -k start
www-data 21375  0.0  0.1 149432  7916 ?        S    17:03   0:00 /usr/sbin/apache2 -k start
1000     26458  0.0  0.0   8112   896 pts/6    S+   17:07   0:00 grep apache2
www-data 30848  0.0  0.1 149396  8044 ?        S    16:43   0:00 /usr/sbin/apache2 -k start

但在记忆中,它们的范围从0.1到0.4,这似乎不是很多记忆。所以我的问题是当你从浏览器向网站发送请求时,除了将一个新的apache2进程作为子进程生成到父apache2进程之外,乘客是否还创建了另一个进程,这可能会阻碍内存?当我运行top命令时,我注意到它有时会在%100 CPU处显示ruby进程。我想知道ruby进程通过乘客以某种方式链接到apache2进程。正如文章所述,某些东西必须导致这些流程成长为大内存消费者。必须有一些我不看的东西。

顺便说一句,我的机器上有超过5个内存:

$ cat meminfo
MemTotal:        6113156 kB

1 个答案:

答案 0 :(得分:0)

Phusion Passenger分别生成您的Ruby应用程序进程。使用passenger-memory-statspassenger-status

查看它们