nginxのエラー(upstream timed out (110: Connection timed out) while reading response header from upstream)

シェアする

  • このエントリーをはてなブックマークに追加

スポンサードリンク

upstream timed out (110: Connection timed out) while reading response header from upstream

Apacheからnginxへ移行して、1週間ほど安定して稼働していると思っていたのですが、nginxサーバーでタイムアウトのエラーが出ました。
取り急ぎ、nginxのエラーログとアクセスログを調べてみました。

nginxのエラーログ

nginxのアクセスログ

実際、ブラウザからアクセスしようとすると、504 Gateway Time-outとなってしまいます。

image

監視サーバー Uptime Robot を見てみます。
image

205時間39分連続で安定稼働していたサーバーが、Gateway Timeoutでアクセスできなくなっていたことが分かります。
ちょっとショックです。

解決方法

nginxでFastCGIを使っている(php-fpmを使っている)場合、以下の設定を試してみます。

/etc/php-fpm.d/www.conf に以下の行を追加します。

request_terminate_timeout = 300

 

php-fpmを再起動します。
# service php-fpm restart

次に、/etc/nginx/conf.d/wordpress.conf に以下の行を追加します。

fastcgi_buffers 8 128k;
fastcgi_buffer_size 256k;
fastcgi_read_timeout 300;

スポンサードリンク

an upstream response is buffered to a temporary file /var/cache/nginx/fastcgi_temp/4/60/0000005604 while reading upstream

他にもこんなエラーが出ていました。

nginxのエラーログ

/etc/nginx/nginx.conf に以下の行を追加します。

proxy_buffer_size     8k;

スポンサードリンク

worker_connections exceed open file resource limit: 1024

ついでに、worker_connectionsを追加します。
/etc/nginx/nginx.conf に以下の行を追加します。

events {
worker_connections  2048;
}

 

nginxを再起動します。
# service nginx restart

[warn] 2018 worker_connections exceed open file resource limit: 1024

という警告が表示されました。

CentOS 5ではデフォルトのファイルディスクリプタの上限は1024のようです。
実際、
# ulimit -n で1024と表示されます。

/etc/security/limits.conf をエディターで開いて以下の行を追加します。

* soft nofile 2048
* hard nofile 2048

この後、rootからexitしてから、再度suコマンドでrootになります。
つまり、su -で読み直せば、/etc/security/limits.conf の設定は反映されます。
# ulimit -n で2048と表示されることを確認します。

再度、nginxを再起動します。
# service nginx restart

無事にnginxが再起動されました。

Googleウェブマスターツールで「このサイトマップの URL の一部でレスポンスの遅延が生じています。」

Googleウェブマスターツールでも以下のエラーが表示されていました。

:警告
問題:このサイトマップの URL の一部でレスポンスの遅延が生じています。
説明:このサイトマップにリストされている URL の一部でレスポンスの遅延が生じています。 サーバーまたはページのコンテンツに問題のある可能性があります。

 

今回の設定変更で修正されるかしばらく様子を見てみることにします。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です