ホームページ  >  記事  >  バックエンド開発  >  nginx php 499エラーの問題を解決する方法

nginx php 499エラーの問題を解決する方法

藏色散人
藏色散人オリジナル
2021-04-02 09:03:484369ブラウズ

nginx php 499 エラーは、サーバー側の処理時間が長すぎ、クライアントが切断されて待機していることが原因です。解決策は、Linux で「php-fpm.conf」を見つけて、 「bottom =dynamic」およびその他の構成。

nginx php 499エラーの問題を解決する方法

この記事の動作環境: nginx1.0.4 システム、PHP7.1 バージョン、DELL G3 コンピューター

PHP および NGINX 499、502 問題の処理

nginx が 502 で表示される理由は多数ありますが、ほとんどの理由はリソース不足に起因すると考えられます。

つまり、バックエンド php-fpm 処理に問題があり、nginx はバックエンド php-fpm プロセスに正しいクライアント要求を送信しました。

ただし、php-fpm プロセスの問題により、php コードが正しく解析されず、最終的に 502 エラーがクライアントに返されました。

サーバーが 502 と表示される理由は、接続がタイムアウトしたためです。サーバーにリクエストを送信します。サーバーには現在接続が多すぎるため、サーバーは通常の応答を返すことができず、このようなエラーが生成されます.

したがって、サーバーの同時実行数が非常に多い場合は、最初にマシンを追加してから、次のように最適化することでより良い結果を達成できますが、同時実行数が少なくても 502 になる場合は、通常、これは構成の問題とスクリプトのタイムアウトの問題が原因であると考えられます。

最後の問題はプログラム コード自体です。処理時間が長すぎてリソースが返せません。したがって、コードの最適化に注意してください。

499 は、「クライアントが接続を閉じました」 に対応します。これは、サーバー側の処理時間が長すぎて、クライアントが待機状態から切断されたことが原因であると考えられます。

投稿が 2 回送信されるのが早すぎると、499 が表示されます。nginx はこれを安全でない接続とみなし、クライアントの接続を積極的に拒否します。

タイムアウトもあります!

それらのほとんどは、proxy_ignore_client_abort を変更すると述べていますが、これは、プロキシ サーバーがクライアント接続を積極的に閉じるべきではないことを意味します。しかし、それは問題の解決策ではありません。

以下は、fpm

子プロセスを制御してこの問題を解決した方法です。オプションは静的および動的です。 static を選択した場合、固定数の子プロセスが pm.max_children によって指定されます。専用サーバーの場合、pm 値を静的に設定できます。動的を選択した場合、一連のパラメータ、つまり動的プロセスによって制御されます。

Linux では、php-fpm.conf を見つけて、下部に次の設定を追加します。

pm = 動的動的ルーティング オプションの設定

pm.max_children = 16 最大数子プロセス

pm.start_servers = 4 起動時のプロセスの数

pm.min_spare_servers = 2 アイドル プロセスの最小数アイドル プロセスがこの値未満の場合、新しい子プロセスプロセスが作成されます

pm.max_spare_servers = 16 は、アイドル プロセスの最大数を保証します。アイドル プロセスがこの値より大きい場合、これはクリーンアップされます。

詳細は説明しません静的設定が多すぎます。デフォルト設定で十分です。さらに詳しく知りたい場合は、Baidu で制御してください。php-fpm のプロセス数

推奨学習: 「PHP ビデオ チュートリアル#」 ##"

以上がnginx php 499エラーの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。