0

この記事をどこかで読みました:

「プレーンな Apache サーバーでは、多くの子プロセスを実行してもあまり問題になりません。プロセスはそれぞれ約 1 MB (ほとんどが共有されています) であるため、多くの RAM を消費しません。状況は異なります。 mod_perl, プロセスは簡単に 10 MB 以上に拡大できます. たとえば、MaxClients を 50 に設定した場合、メモリ使用量は 50 × 10 MB = 500 MB になります. mod_perl サーバー専用の 500 MB の RAM がありますか? "

サーバーで mod_perl を使用していません。apache2 で Phusion パッセンジャーと Ruby on Rails を使用しています。私は 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
4

1 に答える 1

1

Phusion Passenger は、Ruby アプリケーション プロセスを個別に生成します。passenger-memory-statsまたはで表示しますpassenger-status

于 2013-07-12T16:40:41.500 に答える