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 で配列をクリアするいくつかの方法 (要約)

推薦する

Vue マルチページ構成の詳細

目次1. 複数ページの違い2. SPAとMPA 3. Vue Cli スキャフォールディング構成1....

JavaScript のクロージャによって発生する問題を回避する

閉鎖による問題を回避するためのletについてオブジェクト指向の考え方を使用して、購入者情報の削除機能...

Vue シングルファイルコンポーネントの実装

最近、vue について読みました。これまで基本的に見落としていた単一ファイル コンポーネントを見つけ...

MySQL データベースの手動およびスケジュールされたバックアップ手順

目次手動バックアップタイマーバックアップ手動バックアップ1) cmd コンソール: mysqldum...

Docker ベースの ELK を素早く構築する方法

[概要] この記事では、自作の Docker プラットフォームをベースに完全な ELK システムを素...

Vueカスタムコンポーネントは双方向バインディングを実装します

シナリオ:一般的に使用される親コンポーネントと子コンポーネント間の相互作用方法は次のとおりです。親コ...

MySql バッチに挿入するときにデータの重複を避ける方法

目次序文1. ignore を挿入2. 重複キーの更新時3. を置き換える要約する序文Mysql は...

実際のプロジェクトでElementUIを使用する手順の詳細な説明

目次1. テーブル自動ソート2. ページング機能3.el-checkbox-group 複数選択ボッ...

非ルートユーザーを使用してDockerコンテナでスクリプト操作を実行する

アプリケーションをコンテナ化した後、Docker コンテナを起動すると、デフォルトで root ユー...

LAMP ソースコードを使用したエンタープライズレベルのインストールチュートリアル

目次LAMPアーキテクチャ1.ランプの紹介2. WebサービスワークフローWebサーバーのリソースは...

jQueryはフェードインとフェードアウト効果を実現します

jQuery を使用してフェードインとフェードアウト効果を完成させる前に、まずいくつかのコードを理解...

MySQL 5.5 で範囲パーティションを追加および削除する例

導入RANGE パーティション分割は、指定された連続した間隔範囲に基づいています。RANGE の初期...

MySQL マスタースレーブレプリケーションの役割と動作原理の詳細な説明

1. マスタースレーブレプリケーションとは何ですか?マスタースレーブレプリケーションは、スレーブデー...

cocoscreatorプレハブの詳しい説明

目次プレハブプレハブの作り方プレハブの役割1. 同じタイプのノードをバッチで作成する2. 特定の時間...

Mysql Explainコマンドの使用と分析

mysql explain コマンドは、MySQL がインデックスを使用して選択ステートメントを処理...