2016-07-24 13 views
1

まず、状況を説明しましょう。私は64GBのRAMを持つサーバーを持っています& 40コア(SSD)を持つコア。私は約2000人の同時ユーザーを持っていますNginxとPHP-FPM 502不良ゲートウェイエラー

1週間前、私はPHP 7でapacheを使用していましたが、CPUが80%時には101%になった、それはApacheからNginx、Msql to MongoDB 。 CPUは約8%でした。

私の問題は今、多くの時間が502不正なゲートウェイの応答を返し、私はいくつかの答えを探したが、何もすべてで私を助けていないが、私はlisten = 127.0.0.1:9000 ngnixにポートlisten = /var/run/php5-fpm.sockにFPMソケットを変更するときは、常に502を返し、私ができるnginxのです何が問題なのかを知るためにそれを理解してはいけません。

答えて

0

サーバーに(それは賢明に書かれている場合)一日あたりのアプリケーションに> 500 000要求を処理するための強力な十分です。

問題は、PHP-FPMがより多くのリクエストを処理するために多くの子プロセスを持つことができないためです。

Apacheでは、自動的に追加のApacheプロセスから開始されました。

しかし、Nginx + PHP-FPMでは、このような状況をどのように処理するかを自由に指定できます。

ちょうどあなたのFPMプールconfのを変更:​​(またはものは何でもあなたが使用して)

を、それがこのコンテンツを持っていることを確認してください。その後、

pm = static 
pm.max_children = 4096 
pm.process_idle_timeout = 10s 
pm.max_requests = 32 

nginx.confを編集し、作るPHPのFPMを再起動しますこのフィールドが上部に表示されていることを確認してください:

user http; 
worker_processes auto; 

events { 
    worker_connections 4096; 
    multi_accept on; 
    use epoll; 
} 



p.s. listenの属性をip:portに変更しないでください - ソケットは速くなります。ip:portではipとportでネットワーク接続を作成しますが、ソケットバージョンでは.sock "file"を開くだけです。

p.s. fastcgi_buffersなどの指示を変更しないでください。悪いゲートウェイの問題は、php-fpmプロセスが少ないため修正されません。

私のサーバーでは、それはデフォルトです:

fastcgi_buffers 32 1024k; 
fastcgi_buffer_size 1024k; 


P.S.あなたのディスク・ドライブをしないようにするために、不要なログ(nginx.conf)を無効によりIOの負荷を持っている:

access_log off; 
error_log /var/log/nginx/error.log crit; 

あなたは、この偉大なため

+1

感謝を使用newrelicを監視して、サーバのネットワーク、CPU、MEMの活動を監視する必要がある場合答え: –

+0

どのように役立った!幸いに助けてください( – num8er

+1

実際にはより多くの同時リクエストを許可するのに役立ちます...そして私はlaravelからphalconへプロジェクトの特定の部分を移動しました..そして今それは素晴らしいです –

-1

この変更は動作します:nginxの設定ファイル/etc/nginx/nginx.confは:8 16K nginx.confファイル内のhttp]セクションの下に、以下の

HTTP

{

fastcgi_buffersを追加します。 ;

fastcgi_buffer_size 32k;

}

関連する問題