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

推薦する

単一マシン上での Tomcat の複数インスタンスの実装

1. はじめにまず、1 台のマシンで複数のインスタンスを使用する理由という質問に答える必要があります...

高い同時実行性の下でNginxのパフォーマンスを最適化する方法をまとめます

目次特徴利点インストールとコマンド設定ファイルプロキシモードとリバースプロキシ構成フォワードプロキシ...

MySQLデータベース操作の基本コマンド

1. データベースを作成します。 データ data _name を作成します。 PHP でデータベー...

Linux で rc.local ファイルがない場合の完璧なソリューション

新しい Linux ディストリビューションには rc.local ファイルがなくなりました。サービス...

Sitemesh チュートリアル - ページ装飾技術の原理と応用

1. 基本概念1. Sitemeshはページ装飾技術です。 1 : フィルターを通してページアクセス...

JavaScript キャンバス テキスト クロック

この記事では、テキストクロックを実装するためのキャンバスの具体的なコードを例として紹介します。具体的...

VMware15/16 VMwareのロックを解除してMacOSをインストールする詳細な手順

VMware バージョン: VMware-workstation-full-16 VMware バー...

Windows 8 での MySQL 5.6.15 のインストールと設定方法のグラフィック チュートリアル

MySQLは私がとても気に入っているデータベースです。今日はWindows 8システムでインストール...

MySQL 5.6 zipパッケージのインストールチュートリアルの詳細

これまでは、拡張子が .msi のファイル、つまり、完全なインストールが使用されていました。しかし、...

CSS を使用して等アスペクト比のアダプティブ コンテナを実装する方法

最近、モバイル ページを開発しているときに、ページの幅が 100% の場合、高さは幅の半分になり、携...

Centos7.2 で mysql5.7 データベースをインストールするための詳細な手順

サーバー上の mysql はバージョン 8.0.12 でインストールされており、ローカルのものはバー...

さまざまな種類のMySQLインデックス

インデックスとは何ですか?インデックスは、データベース ストレージ エンジンが指定されたデータをすば...

Centos7 での Mysql5.7.19 の詳細なインストールチュートリアル

1. ダウンロード公式サイトからmysql-5.7.19-linux-glibc2.12-x86_6...

Linux 上で Python3.6 をコンパイルしてインストールするための詳細なチュートリアル

1. まず、公式ウェブサイト https://www.python.org/downloads/so...

MySQL ベースのストレージエンジンとログの説明 (包括的な説明)

1.1 ストレージエンジンの概要 1.1.1 ファイルシステムストレージファイル システム: オペ...