
ページが重くなる場合にタイムアウトが発生、その原因が複数の理由のため解決に時間がかかったのでその備忘録。
さきに原因を書くと
- phpの実行時間によるタイムアウト
- ブラウザとnginxのタイムアウト
- nginxとphp-fpmのタイムアウト
まずは最初に表示された
504 Gateway Timeoutを解消する。
phpのタイムアウト時間
max_execution_timeを設定して確認。まだ504エラーが表示されるので、つぎにnginxの
send_timeoutとkeepalive_timeoutを設定。この設定の追加で504エラーは表示されなくなったが、別のエラーがnginxから表示されるようになった。
An error occurrerd. Sorry, the page you are looking for is currently unavailable. Please try again later.

このエラーメッセージがnginxとphp-fpmのタイムアウトだと気づくのに時間がかかった。
これの対応はnginxの設定に
fastcgi_connect_timeout、fastcgi_read_timeout、fastcgi_read_timeoutを追加することで解消できた。最終的にnginx.confとphp.iniに下記の設定を追加しています。
nginx.conf
http {
send_timeout 300; # クライアントへの応答のタイムアウト時間
keepalive_timeout 300; # クライアントとの接続をキープする時間
fastcgi_connect_timeout 300; # nginxとphp-fpmの接続を確立するためのタイムアウト時間
fastcgi_send_timeout 300; # nginxからphp-fpmへのリクエスト送信のタイムアウト時間
fastcgi_read_timeout 300; # php-fpmからの応答のタイムアウト時間
}
php.ini
max_execution_time = 600 # phpのスクリプトの実行時間
webサーバーとアプリケーション・サーバーを分けた場合、その間のタイムアウトも気にしなければいけなかった。