Windows system >> Windowsの知識 >  >> コンピュータソフトウェアのチュートリアル >> サーバー技術 >> サーバーについて >> 完璧なソリューションnginxの504 Gatewayの時間-out

完璧なソリューションnginxの504 Gatewayの時間-out

  

dedecmsは最近、新たなコンテンツの数が多いウェブサイトを構築し、コンテンツ量の3つの列が生成された列以上の2302個の列は、2000を超えるがありますリストには、サーバと504ゲートウェイタイムアウトに登場したときにnginxのです、私は本当にただ、どんなにをnginxのキャッシュ設定を変更し、記事を見つけるために、インターネット上のサーバメンテナンス要員を理解していない、彼は気にしないだろうが、私は


?どんなにああ、コンテンツの背中を使用していないページの一覧を生成することはできませんがまだないことはできませんローカル、ローカルに設定さnginxのにデータベースをダウンロードするには、私は何度も動作しませんしようとしたが、また変更にApacheはより誇張されており、83ページの生成を続けることはできませんnginxはさらに強力であるように見えます504ゲートウェイタイムアウトは表示されますが、完全に生成できます。

インターネットでもっと解決策を見つけなければなりませんが、Nを何度も試してみたところ、ついに便利な方法を見つけました。この記事は、今後の参考のためにここにコピーされています。同じ問題を抱えている友人にも役立ちます。

次の部分は参考部分です私自身は技術を知りませんので、私のdedecms5.6では役に立ちました。


nginxの502不正なゲートウェイが実行されたPHP-CGI要求の意味ですが、いくつかの理由で(通常はリソースの問題を読んで)PHP-CGIプロセスが終了が生じ完了していません。

Nginx 504ゲートウェイタイムアウトとは、要求されたゲートウェイが要求していないことを意味します。簡単に言うと、PHP-CGIの実行要求はありません。

この2つの問題を解決Nginxは504ゲートウェイタイムアウトがnginx.confに設定されているのに対し、一般的なnginxの502不正なゲートウェイとのphp-fpm.confの設定で、実際に包括的思考の必要性であります関連しました。

正しい設定を行うには、サーバー自体のパフォーマンスや訪問者数など、さまざまな要因を考慮する必要があります。

現在のサーバーを例にとると、CPUは4つの1.5G、1GBのメモリを搭載したCENTOSシステムです。ビジターは同時にオンラインで約50人です。

しかし、オンラインNPCは、多くの情報を処理するPHP-CGIを要求する必要がありますので、私は設定nginx.confます:

fastcgi_connect_timeout 300S;

fastcgi_send_timeout 300S; < BR>

fastcgi_read_timeout 300S;

fastcgi_buffer_sizeの128K;

fastcgi_buffers 8 128K;#8 128

fastcgi_busy_buffers_sizeの256K;

fastcgi_temp_file_write_sizeの256K;

にfastcgi_intercept_errors;

本明細書で提供さであるフロント三つの主要な、すなわち

300S fastcgi_connect_timeout;

300S fastcgi_send_timeout;

300S fastcgi_read_timeout。

これはPHP-CGIが接続し、送信しそして読むのにかかる時間を指定します300秒で十分なので、私のサーバーはめったに504ゲートウェイタイムアウトエラーを持ちません。最も重要なのはphp-fpm.conf設定で、これは502 Bad Gatewayと504 Gateway Time-outに直接つながります。

のは、PHP-fpm.conf、いくつかの重要なパラメータを詳しく見てみましょう:、1は「max_children」で、2つの重要なパラメータがある

PHP-fpm.conf別一つは「request_terminate_timeout」
である

私の二つの値は、1が「900」「40」のセットですが、この値は普遍的ではなく、独自の計算を必要とします。

以下のように計算:十分で、サーバーのパフォーマンスが十分であれば

、およびブロードバンド・リソース、PHPスクリプトは、ループシステムやBUGない、0に設定し、その後のことができ、直接「request_terminate_timeout」。 0の意味は、時間制限なしにPHP-CGIを実行し続けることです。そして、あなたはあなたのPHP-CGIはBUG表示されることがあります、またはあなたのPHP-CGIのブロードバンド不足や他の原因は、死を装うことができ、これを、行うことができないならば、私はあなたが「request_terminate_timeout」福を与える示唆しますサーバーのパフォーマンスに基づいて設定できる値。一般的に、パフォーマンスが高いほど、20分から30分の間で設定できます。私のサーバーのPHPスクリプトは長時間実行する必要があるので、10分を超えることもあるので、900秒に設定してもPHP-CGIは停止せず、502 Bad gatewayエラーが発生しません。

「max_children」これはそれから値を計算する方法ありますか?基本的には、この値は、より良い、PHP-CGIプロセスより大きく、より迅速に処理では、要求はまれでしょうキューに入れられました。設定「max_childrenは」*一般的なPHP-CGIの各20Mについて、通常の消費サーバーのメモリ、サーバーのパフォーマンスに応じて設定する必要があるので、私、私は40に設定された「max_children」、20M 40 = 800Mとは、ピーク時にはすべてのPHP-CGIの消費量が800M未満であることを意味します。これは、私の実効メモリである1Gbよりも少なくなります。私の「max_children」の設定は、5〜10として、小さい場合のphp-cgiのは「疲れた」意志と、それから、処理速度が非常に遅い、待機時間が長くなります。問題が発生した場合、長い時間が要求されていない場合は治療が504ゲートウェイタイムアウト・エラーが発生することになり、それらのいくつかのphp-cgiのの疲れが処理されているこのエラーの502不正なゲートウェイとなります。

Copyright © Windowsの知識 All Rights Reserved