nginx「504 ゲートウェイタイムアウト」エラーを解決する

nginx「504 ゲートウェイタイムアウト」エラーを解決する

ウェブサイトを作成する学生は、アクセス時に一部の nginx サーバーが 504 Gateway Time-out エラーを表示することによく気づきます。通常、これは nginx のデフォルトの fastcgi プロセスの応答が遅いために発生しますが、他の状況もあります。ここでは、参考までにいくつかの解決策をまとめます。

「504 ゲートウェイ タイムアウト」エラーを解決する方法

方法/手順

ケース1: nginxのデフォルトのfastcgiプロセス応答バッファが小さすぎる

この状況により、fastcgi プロセスが中断されます。fastcgi サービス チームがこの中断を適切に処理しないと、「504 ゲートウェイ タイムアウト」エラーが表示される場合があります。

状況 1 の解決策:

デフォルトの fastcgi プロセス応答バッファは 8K ですが、 nginx.confに次の行を追加することで、さらに大きく設定できます: fastcgi_buffers 8 128k

これは、fastcgi バッファを 128k のサイズの 8 ブロックに設定することを意味します。

状況 1 の解決策 (改善):

上記の方法を変更した後も問題が発生する場合は、nginx のタイムアウト パラメータを変更し、パラメータを少し増やして、たとえば 60 秒に設定することができます。

send_timeout 60;

これら 2 つのパラメータを調整した後、「504 ゲートウェイ タイムアウト」エラーは表示されなくなりました。これは、効果がかなり良好で、問題が基本的に解決されたことを示しています。

ケース2: PHP環境設定の問題

ここで、php-fpm と nginx の設定を変更する必要があります。この場合、「504 ゲートウェイタイムアウト」エラーメッセージも表示されます。

状況 2 の解決策 (php-fpm 構成の変更):

十分な数の php-cgi プロセスが利用可能になるように、 max_children 10から30変更します。

request_terminate_timeout 0秒から60秒に変更します。これにより、php-cgi プロセスがスクリプトを処理するタイムアウト期間が 60 秒に増加し、プロセスのハングアップを防ぎ、利用効率を向上させることができます。

状況 2 の解決策 (nginx 構成の変更):

fastcgi リクエストの数を減らし、バッファを変更しないようにするには、いくつかの nginx 設定項目を次のように変更する必要があります。

fastcgi_buffers 4 64kから2 256kに変更します。

fastcgi_buffer_size 64kから128k変更します。

fastcgi_busy_buffers_size 128kから256k変更します。

fastcgi_temp_file_write_size 128kから256k変更します。

状況 2 の解決策を変更した後、php-fpm と nginx の設定を再読み込みしてテストする必要があります。その後、「504 ゲートウェイ タイムアウト」エラーは検出されず、効果は依然として良好です。

以上が、nginxの「504 Gateway Time-out」エラーを解決するための編集者による紹介です。皆様のお役に立てれば幸いです。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • nginx 504 ゲートウェイタイムアウトエラーを解決する方法
  • nginx 504 ゲートウェイタイムアウトエラーのトラブルシューティングと解決記録
  • Nginx 502 不正なゲートウェイと Nginx 504 ゲートウェイ タイムアウト エラーの解決策

<<:  MySQL インデックス失敗の原理

>>:  Vue で配列をクリアするいくつかの方法 (要約)

推薦する

デザイナーの「職業病」について

デザイナーは世界で最も繊細で感情的な人々だと私はいつも感じています。私がこう言うときに優越感を感じる...

Linux curl フォームのログインまたは送信と Cookie の使用に関する詳細な説明

序文この記事では主に、curl を介してフォーム送信ログインを実装する方法について説明します。単一の...

Vueのハッシュジャンプ原理の詳細な説明

目次ハッシュと履歴の違いハッシュ履歴getCurrentLocation の実装setupListe...

大きな MySQL テーブルに列を追加する方法

質問は https://www.zhihu.com/question/440231149 から参照さ...

mysql ステートメントを使用してユーザー権限を照会するプロセスの詳細な説明

MySQL では、ユーザーに付与された権限をどのように確認しますか? ユーザーに付与される権限は、グ...

JavaScript の構造化代入の一般的なシナリオと例 5 つ

目次序文1. データを抽出する2. エイリアス値3. 動的プロパティ4. オブジェクトの分解における...

Docker で FastDFS をデプロイする方法

Dockerにfastdfsをインストールするディレクトリをマウント-v /e/fdfs/トラッカー...

CSS3 で transform を使用した場合のフォントぼかしの解決方法の詳細な説明

この質問は非常に奇妙なので、あまり多くを語らずにコードに直接進みます。 .g-ダイアログラッパー{ ...

ネイティブ js はフォームの定期的な検証を実装します (検証後にのみ送信)

以下の機能が実装されています。 1. ユーザー名: onfouc は msg ルールを表示します。o...

MySQL ジョイントインデックスの使用ルール

結合指数は複合指数とも呼ばれます。複合インデックスの場合: MySQL はインデックス内のフィールド...

Linux で履歴レコードを表示し、タイムスタンプを追加するためのヒント

Linux で履歴レコードを表示し、タイムスタンプを追加するためのヒントbashに詳しい人なら、hi...

MySQL の高可用性アーキテクチャの完全な説明: MHA アーキテクチャ

目次1. はじめに2. 構成3. 作業プロセス4. 建築5. 表示例MHA (Master HA) ...

MySql 学習ノートにおけるトランザクション分離レベルの詳細な説明

背景トランザクションについて話すとき、誰もがそれに精通している必要があります。MySQL データベー...

HTML の POST リクエストにおける a タグの 2 つの使用法の分析

HTML POST リクエストで a タグを使用する 2 つの例を次に示します。 1. ajaxを使...

MySQL Binlog ログの読み取り時によくある 3 つのエラー

1. mysqlbinlog: [エラー] 不明な変数 'default-character...