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

推薦する

MySql8.0バージョンに接続するMyBatisの設定問題について

mybatis を学習しているときにエラーが発生しました。エラーの内容は次のとおりです。データベース...

コンパイル/サーバーなしでブラウザにCommonJSモジュールを実装する

目次導入1. one-click.jsとは2. パッケージングツールはどのように機能しますか? 3....

州と市町村の連携を簡単に実現するJavaScript

この記事では、省と市の簡単な連携を実現するためのJavaScriptの具体的なコードを参考までに紹介...

MySQL は、元のデータと同じデータがある場合、更新ステートメントを再度実行しますか?

背景この記事では主に、MySQL が更新ステートメントを実行するときに、元のデータと同一の (つまり...

CentOS仮想マシンの時刻を変更する方法

上はシステム時間、下はハードウェア時間です。ここでは変更を加えているので、同じくらいの速さになってい...

Dockerイメージ作成の完全なプロセス

目次序文作成手順CentOSベースイメージを作成するコンテナを作成してカスタマイズするカスタムコンテ...

優れた UI (ユーザー インターフェース) デザイナーになるための 20 の道標

はじめに: インターフェイス デザイナーの Joshua Porter が自身のブログでこの記事を公...

Nginxの書き換えモジュールの詳細な説明

書き換えモジュールは ngx_http_rewrite_module モジュールです。その主な機能は...

全画面ページのスクロール効果を実現するJavaScript

JavaScript DOM を読み終えた後、解釈型 JavaScript スクリプト言語に対する...

ディレクトリスクロール効果を実現するネイティブJS

これはネイティブ JS で実装されたテキスト スクロール効果です。この効果は通常、ニュース、ダイナミ...

DockerプライベートライブラリHarborのアーキテクチャとコンポーネントの説明

この記事では、Harbor アーキテクチャの構成と、実行時に各コンポーネントを使用する方法について説...

ブートストラップテーブルの使い方のまとめ

この記事では、bootstrapテーブルの使い方を参考までに紹介します。具体的な内容は次のとおりです...

Nginx の負荷分散構成、ダウンタイム発生時の自動切り替えモード

厳密に言えば、nginx には負荷分散バックエンド ノードのヘルス チェック機能はありませんが、デフ...

MySQL 5.7.20 zip インストール チュートリアル

MySQL 5.7.20 zipインストール、具体的な内容は次のとおりです(1)圧縮パッケージを解凍...

Podmanはコンテナを自動的に起動し、Dockerと比較します

目次1. podmanの紹介2. Dockerと比較した利点3. 互換性4. バックグラウンド サー...