Linux で php-cgi が停止する場合の解決策は、nginx 構成項目を変更し、FastCGI リクエストの数を減らし、バッファー ([fastcgi_buffer_size 128k;] など) を変更しないように試みることです。
#この記事の動作環境: linux 5.9.8、php 7、thinkpad t480 コンピューター。
前書き:
本番環境のサーバー (centos 5.2 64 ビット 4G メモリ) には、Web サイトを開けないという問題が常に発生していることに偶然気づきました。後でサーバーに行って確認したところ、nginx と php-cgi の両方が実行されていましたが、この時点では php-cgi の CPU 使用率は 0 でした。そこで、すぐにファイル ハンドルの制限を確認しました。
ulimit -n
結果は 1024 で、運用環境のサービスには小さすぎます。
インターネット上で紹介されている解決策のほとんどは、
ulimit -SHn 51200 # 51200可自己根据应用调整
を直接入力する方法です。この方法の欠点は明らかで、ログアウトすると設定が無効になります。
コマンドは /etc/rc.d/rc.local に直接書くべきとも言われていますが、今日正しい方法を見つけました
/etc/security/limits.conf を開きます, そして中には非常に詳しいコメントが書いてありますので、以下の設定を見つけてください(設定されていない場合は挿入してください)
コードは次のとおりです
* soft nofile 51200 * hard nofile 51200
終了後に再度ログインしてハンドル数を確認してください。 51200に正しく設定されています。
同様の状況が発生した場合は、ファイル ハンドルの数の設定が小さすぎるかどうかを確認してください。
アクセス時の 502 Bad Gateway の解決策
Nginx 502 Bad Gateway は、要求された php-cgi が実行されたものの、何らかの理由 (通常はリソースの読み取りの問題) で実行されなかったことを意味します。完了し、php-cgi プロセスが終了します。一般に、同時実行性が高すぎる Web サイトではこのエラーが発生する傾向があります。 502 Bad Gateway が表示される理由はさまざまですが、ほとんどの場合は以下のパラメータを変更することで解決できます。
nginx のいくつかの設定項目を変更し、FastCGI リクエストの数を減らし、バッファーを変更しないようにしてください:
コードは次のとおりです
fastcgi_buffer_size 128k; fastcgi_buffers 2 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k;
Open /usr/ local/php/etc /php-fpm.conf ファイルで、次のパラメータを変更します。
コードは次のとおりです
25 requests">2048 65535 30s 60s
request_terminate_timeout は、fast-cgi 実行スクリプト時間を指します。デフォルトは0秒。 0 の意味は、php-cgi を時間制限なく実行し続けることを意味します。ここで 0 に設定すると、502 Bad Gateway が表示されても 502 ステータスが継続し、変化しません。ただし、これを 5 秒に設定すると、php-cgi は 5 秒後に自動的に回復します。この値はサーバーのパフォーマンスに応じて設定できますが、ここでは60秒に設定しています。
max_childrenはphp-cgiの処理過程を表します。 max_children が 5 ~ 10 などの小さい値に設定されている場合、php-cgi は「非常に疲れ」、処理速度が非常に遅くなり、待ち時間が長くなります。リクエストが長時間処理されない場合、504 ゲートウェイ タイムアウト エラーが発生します。 max_children の設定もサーバーの性能に合わせて設定する必要があります プロセス数が増えるとそれに応じてメモリ使用量も増加します 通常の場合、php-cgi 1 つあたりに消費されるメモリは約 20M です ここでは次のように設定しました25.
php-fpm のデフォルトの静的処理方法では、php-cgi プロセスが長時間メモリを占有し、解放できなくなります。これは nginx エラーの原因の 1 つでもあるため、 php-fpmの処理方法をapacheライクなモードに変更しました。
変更が完了したら、lu-restart (LuManager サーバー管理システム) を実行します。
推奨学習: php トレーニング
以上がLinux で php-cgi が停止した場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。