web-dev-qa-db-ja.com

nginxワーカープロセスの数

Drupalインストールを提供するようにnginxを設定しています。nginxワーカープロセス設定で矛盾する情報を見つけたようです。1つのサイトで2つ必要、1つで5つ必要、1つではプロセッサごとに1つ...

Nginxワーカープロセスの数を選択するにはどうすればよいですか?それが違いを生むなら、それはVMWareクラスター上のゲストVMであり、私はそれに1つの仮想プロセッサーを与えました。

23
ceejayoz

Nginxは、Apacheおよび接続Webサーバーごとの他のプロセスとは異なります。 1つのマスタープロセスを使用して、実際に接続を処理する少数のワーカープロセスを開始および監視します。私の推奨は、デフォルトのワーカー数である1から始めることです。

worker_processes  1;

これを増やす必要があるのは、nginxワーカーがIOのブロックに費やしている時間が多すぎる場合です。これは、1秒あたり何百ものリクエストを処理するまで続きます。

これらの設定が役立つこともあります。

worker_rlimit_nofile 8192;

events {
    worker_connections  2048;
    use epoll;
}
16
Dave Cheney

SMPシステムでは、少なくともnCPUワーカープロセスを開始する必要があります(クアッドコア-4つなど)。これはプロキシのエヌグストです。

静的コンテンツの多いサイトにサービスを提供する場合は、ディスクごとに1つずつ、ワーカーを追加することをお勧めします。

ディスクサブシステムが不十分または負荷が高すぎる場合、nginxワーカープロセスがI/O操作でロックされ、他のリクエストを処理できなくなる可能性があります。この場合、ワーカープロセスの数を適切な値(数十)に増やすか、ディスクキャッシュ用のメモリを追加する必要があります。

「ps ax」のプリントアウトを見てください。「D」状態のワーカーはロックされています。少なくともnCPUワーカープロセスがブロックされなくなるまで増やします。

15
Vadim