504Bad Gate-way time-outの原因
504Bad Gate-way time-outがおこる原因は、
504 Gateway Time-outとは、クライアントからのリクエストを受けたサーバが更に別サーバにリクエストを送信した際に、別サーバからの応答が一定時間以内に返って来なかった場合にリクエストを受けたサーバーからエラーをだします。
これをもっとわかりやすく言い換えると
504 Gateway Time-outとは、クライアントからのリクエストを受けたサーバーAがサーバーBにリクエストを送信した際に、サーバーBからの応答が一定時間以内に返って来なかった場合にサーバーAからこのエラーをだします。
というわけで応答がなにもなかったら504Bad Gate-way time-outエラーがおこるということですね。
504Bad Gate-way time-outの解決方法は?
504Bad Gate-way time-outの解決方法としては単純に時間をのばせばよいようです。どのファイルのどの項目をいじればよいのかというは、いろいろと設定項目があるようです。
• php.ini → max_execution_time = 180
• php-fpm.conf → request_terminate_timeout 180
• nginx.conf → fastcgi_read_timeout 180
それぞれの効果は以下のようになっているそうです。
- max_execution_time: PHPスクリプトの実行時間
- request_terminate_timeout: リクエストを終了するまでの待ち時間
- fastcgi_read_timeout: FastCGIプロセスへデータを送信するための待ち時間
time-outの時間をひきのばしたいけど設定できない場合もある
たとえばレンタルサーバー会社でphp.iniの設定が制限されていてtime-outの時間を設定できないことがあります。
このブログはロリポップをつかっています。ロリポップのphp.iniの設定方法に関しては PHP設定 / サーバー・プログラム / マニュアル – レンタルサーバーならロリポップ! に書いてあります。
しかし、実際にphp.iniの設定を開いてみると、timeout時間を設定できる項目がないんですよね。
たぶんサーバーに負荷をかけさせないように、意図的に設定できる項目を制限しているんじゃないかと。
このあたりは情報をさがせばもしかしたら、設定できるようにする方法があるかもしれませんが、今回はまあいいかということでこれ以上はさわってません。とりあえず、504Bad-GateWayがでたら応答がなかったらおこるんだなあというのがわかったのでよしとしました。
コメント