2017-01-10 13 views
2

nginx + php7.0-fpmでこの問題が発生しています。nginx php-fpmの設定が子供の制限を打つ

他のサービスがインストールされていない純粋なPHPサーバでテストが行​​われます。

次の警告が表示されます。

WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 16 children, there are 0 idle, and 35 total children 

そして、サーバーの速度が大幅に低下します。

私はAWS t2.medium instance - 2vCPUと4GB RAMを使用しています。

php7.0-fpm/www.confは私が単に要求へ{"m":"OK"}を返信どのテストするために使用していlaravelアプリケーションを持っている

pm = dynamic 
pm.max_children = 50 
pm.start_servers = 20 
pm.min_spare_servers = 10 
pm.max_spare_servers = 20 
pm.max_requests = 500 

のようなルックスを設定します。 >https://ghostbin.com/paste/528tw

そして、私はhtopを使用してCPU使用率を監視 -

私は abテストから apache2-utils

ab -n 1000 -c 50 https://mytestserver.com/ 

レスポンスを使用していることをテストしました。

abテスト中に2つのCPU使用率が100%速く低下しました。ただし、メモリの使用量は400MBです。

なぜCPUを使いすぎているのですか? php-fpmからWARNINGを取得するにはどうすればよいですか?

私は間違っていますか?私を案内してください。

ありがとうございました。

+0

私はあなたがCPUコアよりずっと多くの子供を産むべきではないと思います。あなたは2つの仮想コアしか持っていません、私は2つの子サーバーを生成します。 – DanFromGermany

+0

@DanFromGermany、これは午後からのものです。子サーバーを参照していますか? – moeseth

+0

'nginx'は、PHPを処理するよりも要求を受け入れる方がずっと高速です。つまり、 'nginx'はリクエストが多すぎるPHPをフィードに送り、' fpm'はタイムリーにそれを処理できません。子供たちは忙しく、警告を受け取ります。あなたはCPUの限界にぶつかったので、修正することはできません。もしそうなら、それはあなたのサーバでPHPが動く速さです。このような状況が発生すると、そのWebサーバーは非常に高速であり、複数のサーバーを 'php-fpm'で起動すると、nginxはそれらの間で負荷を分散できます。それらの設定変数のいずれかを上げても何も起こりません。CPUコアと電源が足りなくなります。 – Mjh

答えて

3

PHPのメモリ使用量だけでなく、同時使用CPU使用量も考慮に入れることができます。

子サーバーが多すぎると状況が悪くなり、遅くなり、PHPがそれ以上のリクエストを処理できなくなり、すべてを完全にブロックすることができます。

サーバーのCPU使用量は、2つのvCPUに比べて少なすぎます。それ以外の場合は、メモリ量に合わせてCPUを増やす必要があります。

これは、2つの仮想CPUコアのためのより適切である:あなたがApacheのベンチマークツールを使用して、50個の同時要求を行う場合にのみ2のvCPUサーバは非常に遅くなるために

pm = dynamic 
pm.max_children = 4 
pm.start_servers = 2 
pm.min_spare_servers = 1 
pm.max_spare_servers = 2 
pm.max_requests = 500 

はまた、それは完全に正常です。ベンチマークは別のコンピュータから実行する必要があります。

基本的なOSとウェブサーバー(nginx)にはCPUの使用量も必要であることに注意してください。

AWSサーバーは、少しメモリを搭載したRaspberryPiとほぼ同じ機能を備えています。Mjhから

便利コメント: - それは持っている大きな問題だあなたはそれだけ を持っているポイントを得る場合には、第2

100の要求は、悪いことではありません。この時点でSSLをドロップすると、1秒あたり 個のリクエストが最善の方法ではない可能性があります。 もちろん、私はあなたのサイトについて何も知らないし、 を使っているか、SSLが必要かどうかは分かっていますが、SSLを持っていれば、Googleのランキングに影響します。 それはいつもmin-maxingであり、 SSLの場合、私があなただったら、私はそれを保つでしょう。

+0

警告[10-Jan-2017 15:30:39]警告:[pool www]サーバがpm.max_children setting(4)に達しました。そして 'ab 'によれば、それは毎秒80リクエストしか処理できませんか? 2vCPUと4GB RAMマシンでは正常ですか?アプリケーションサーバーは単にロジックなしで '{" m ":" OK "}'と返答します。 – moeseth

+0

あなたはこれらの数字でarroundを演奏する必要がありますが、1から5の間でそれらを保ちます。本番環境では、サーバーのCPU使用率が常に100%になることは望ましくありません。あなたはそれがarround 60%であることを望んでいるので、ピークを処理することができ、SSHアクセスをブロックしません。 – DanFromGermany

+0

うわー、aws 't2.medium'はかなりおかしく、月額45ドルです。 fml。 – moeseth

関連する問題