web-dev-qa-db-ja.com

Apacheが非常に多くのプロセスを実行しているのはなぜですか?過剰RAMここですか?

ApacheがLAMPサーバー(ubuntu 10.10)で複数のプロセスを実行していることに気づきました。 Wordpressサイトを実行しています。www-dataがApache2を必要以上に実行しているようです(メモリも多すぎます)。正しいですか:

ID      Owner       Size        Command   
31200   www-data    251236 kB   /usr/sbin/Apache2 -k start
20678   www-data    250948 kB   /usr/sbin/Apache2 -k start
25781   www-data    248888 kB   /usr/sbin/Apache2 -k start
31045   www-data    248844 kB   /usr/sbin/Apache2 -k start
19926   www-data    246480 kB   /usr/sbin/Apache2 -k start
20749   www-data    239380 kB   /usr/sbin/Apache2 -k start
32616   www-data    238632 kB   /usr/sbin/Apache2 -k start
8846    mysql   238128 kB   /usr/sbin/mysqld
24178   www-data    234228 kB   /usr/sbin/Apache2 -k start
32618   www-data    232344 kB   /usr/sbin/Apache2 -k start
32615   www-data    232204 kB   /usr/sbin/Apache2 -k start
19805   root    208156 kB   /usr/sbin/Apache2 -k start
17
Trent Scott

Apacheは複数のプロセスを実行して、クライアント要求が来たときにそれらを準備します。サーバープロセスの生成は遅いため、クライアントを待機するプロセスを用意するのが最善です。

メモリ使用量については、タスクが使用する物理メモリの量であるRESサイズ(上部に表示)を考慮する必要があります。

メモリーを使いすぎているApache2プロセスが多すぎると思いますか?何を期待していますか?なぜそう期待するのですか?

19
Paweł Brodacki

Pawelによる答えが説明するように、Apacheはプロセスプール(またはmpm_workerを使用した要求ごとのスレッド)で要求ごとのプロセスモデルを使用します。

Nginxなどの非ブロッキングIOに基づくWebサーバーを使用すると、メモリ使用量を削減できる場合があります。これにより、サーバーは接続ごとにプロセス/スレッドを専用にする必要がなくなります。

3
janneb

Apacheは設定した数だけプロセスを実行します。 prefork または worker マルチプロセッシングモジュールを使用している場合、構成は異なります。

2
sciurus