PHP-FPM サーバーが枯渇

PHP-FPM サーバーが枯渇

私は、数分以内に 0 から 50,000 のクライアントに同時に対応できる「サージ トラフィック」アプリを構築しています。ここで私が何か間違ったことをしているかどうかを理解するために、皆さんに助けを求めようと思いました。

現在、loader.io を使用してテストを行っています。この負荷テストの構成は、1 分間に 0 ~ 10,000 のクライアントです。テスターが実行するのはログイン ページの読み込みだけで、それ以上のことは行わず、ログインすら行いません。ページ サイズは 793 KB で、実際のブラウザーでの読み込み時間は ~400 ミリ秒に相当します。

[01-Mar-2018 09:57:48] WARNING: [pool app.com] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 4244 idle, and 4607 total children
[01-Mar-2018 09:57:49] WARNING: [pool app.com] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 4216 idle, and 4615 total children
[01-Mar-2018 09:57:50] WARNING: [pool app.com] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4211 idle, and 4631 total children
[01-Mar-2018 09:57:52] WARNING: [pool app.com] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4179 idle, and 4663 total children
[01-Mar-2018 09:57:54] WARNING: [pool app.com] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4181 idle, and 4695 total children
[01-Mar-2018 09:57:57] WARNING: [pool app.com] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4244 idle, and 4727 total children
[01-Mar-2018 09:57:58] WARNING: [pool app.com] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 32 children, there are 4412 idle, and 4759 total children

私の php-fpm 設定は次のとおりです。

pm.max_children 3000
pm.max_requests 200
pm  dynamic
pm.start_servers 1500
pm.min_spare_servers 300
pm.max_spare_servers 1500

ホストサーバーの仕様:

AMD Opteron(tm) Processor 6344

Core Name
Abu Dhabi
# of Cores
12-Core
# of Threads
12
Operating Frequency
2.6 GHz
Hyper Transports
6.40 GT/s
L2 Cache
6 x 2MB
L3 Cache
2 x 8MB
Manufacturing Tech
32 nm

50GB RAM (I have provided this to the container), server has 64 total.

奇妙なことに、この構成でも、まだ「ビジー状態のようです」というメッセージが表示されます。

ここで物事は死にます: ここに画像の説明を入力してください

ここで覚えておくべき最も重要なことは、通常はトラフィックがほとんどないかまったくないということですが、数分以内に最大 50,000 人のユーザーがアクセスすることが予想されます。皆さん、このエラーについて助けていただけませんか。よろしくお願いします!

答え1

追加のワーカーを起動するには時間がかかり、ログを見るとわかるように、php-fpm は一度に 32 個の子プロセスを生成します。最も簡単な「修正」は、最小サーバーと最大サーバーを同じ値に設定することです。そうすれば、ワーカーが起動するまで待つ必要がなくなります。

また、可能であれば、そのようなことをするのではなく、キャッシュを実装するようにしてください。そうすれば、常に高速になります。

関連情報