スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

Nginx+php-fpmで502とか504とかのエラーをなんとかしよう

CentOSサーバー機の方は大丈夫なんですが、なんだかメインマシンのLEMP環境で502 bad gatewayとか504 gateway timeoutとか出ちゃうようになってしまったので色々やってみたメモ。

1.502 bad gatewayとか504 gateway timeoutってそもそもなに?
502 Bad Gateway
504 Gateway timeout
今回の場合はNginxとphp-fpm(fastcgi)の間で処理が長すぎるときにこんなエラーを吐いてしまうっぽい。

2.発症タイミングとログ
concrete5.7を新規にインストールしようとした時。インストールが進行して半分ちょっと行ったとこでこんなエラー。まぁ処理長いですからね。
この時のNginxのエラーログ

[error] 2407#0: *1 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET /web/index.php/install/run_routine/elemental_full/install_dashboard HTTP/1.1", upstream: "fastcgi://unix:var/run/php5-fpm.sock", host: "localhost", referrer: "http://localhost/web/index.php/install"


調べてみるとWordPressのインストールとかUpdateとかでなる人もたまにいるっぽいです。まぁ、phpがらみの長い処理やってるとなることがあるよって感じですかね。

3.解決方法
結論的にはNginxの設定ファイルでserverセクションに  fastcgi_read_timeout 1000; とか追記したら行けるようになりました。
nginx でupstream timed outエラーが発生した時の対処
fastcgi_read_timeout はデフォルト値が60秒らしいので、これを超えたからエラーだったみたいですね。

ちなみにここに辿り着くまでにやったこと
/etc/nginx/nginx.conf

keepalive_timeout 65; →keepalive_timeout 1065;


CentOSサーバーはたしかこれで解決したんですが、今回はダメ。というか、ここ前からけっこう伸ばしてあったし。

php-fpm側の設定変更
How To Fix 504 Gateway Time-out on Nginx
/etc/php5/fpm/php.ini 385行目あたり

max_execution_time = 1050



/etc/php5/fpm/pool.d/www.conf 318行目あたり

request_terminate_timeout = 1000


コメントアウトしてあるので、行頭の;を削除して時間指定。

設定後はphp-fpmとnginxをrestartなりreloadなり。

$ sudo service php5-fpm restart
$ sudo service nginx restart



してみたけどダメ。

で、最初のサイト(nginx でupstream timed outエラーが発生した時の対処)にたどり着いて
/etc/nginx/conf.d/~~.conf (サーバーセクションの設定が書いてあるファイルなので、環境によって名前違うかも。うちのLMDE機ではconf.d/php.confにphp-fpm使うものの設定まとめてあるのでここ)

server {
listen 80;
server_name localhost;


# root directive should be global
root /usr/share/nginx/html/;
index index.php index.html index.htm;

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

fastcgi_read_timeout 300; ←これ追記
 (後略)


Nginxをrestartなりreloadなり。

$ sudo service nginx restart



4.解決
concrete5は空のデータベース必要なのでデータベース作りなおして再挑戦するとエラーは出ませんでした。
結局最後のNginxの設定ファイルのfastcgi_read_timeout 追記で行けたんですが、この前にやったphp.iniとかphp-fpmの方でのtimeoutの設定は必要だったのかどうかはまだ検証してません。(多分機会があるまで検証しないw

なので、Nginx+PHP-fpmで502とか504出ちゃって困っててこの記事に辿り着いた人がもしいたら、たぶんNginxの設定最初にやって、ダメならphp-fpmの設定もやってみると解決すると思うよ。たぶんね。
あと1000秒とかはやりすぎだと思いますので特に本番サーバ−では適当に調整するのがいいと思います。

関連記事
CentOS 6.5でnginx+php-fpmでPHPを動かしてみる
Cent OS 6.5でNginx+php-fpm+mysqlでFC2オープンソース版とWordPress
CentOS6.6のLEMP環境のconcrete5とWordPressのちゅーにんぐ(MySQL編)
CentOS+LEMPでbaserCMS
LMDE(Linux Mint Debian Edition)でローカルにサクッとLEMP(Nginx+MySQL+PHP)
LMDE2014からLMDE2(Besty)にupgrade
スポンサーサイト
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

         
ブログ内検索

カスタム検索

フリーエリア

クリックで救える命がある。

レンタルサーバー

さくらのマネージドサーバ
さくらインターネットのVPS
ConoHaのVPS
WebARENA VPSクラウド
99円レンタルサーバー
【CloudCore VPS】
GMOクラウドのレンタルサーバー
転送量無制限 ABLENET
@WAPPYレンタルサーバー
SPPDレンタルサーバー

カテゴリー+月別アーカイブ

 

アクセスカウンター

現在の閲覧者数:

プロフィール

Author:tmin
PCヲタ。ライト2ちゃんねら。
スロット好きのギャンブラー。(元
むしろ人生がギャンブルだが目下のところ負けっぱなし。
座右の銘は「結果オーライ」。故に基本適当。
トラブルもまた楽しみのひとつ

コメント、トラバ、相互リンク歓迎。お気軽にどうぞ。
当ブログについて
Twitterでこっちとあっちの更新情報流すことにしてみます。
http://twitter.com/t_min
Project Mikunchu♪Wikiできました。
Mikunchu200x40.png


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。