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
- upstream timed out (110: Connection timed out) の解決方法
- an upstream response is buffered to a temporary file /var/cache/nginx/fastcgi_temp/4/60/0000005604 while reading upstream の解決方法
- worker_connections exceed open file resource limit: 1024 の解決方法
- Googleウェブマスターツールで「このサイトマップの URL の一部でレスポンスの遅延が生じています。」
- さくらのVPSサーバー
upstream timed out (110: Connection timed out) while reading response header from upstream
Apacheからnginxへ移行して、1週間ほど安定して稼働していると思っていたのですが、nginxサーバーでタイムアウトのエラーが出ました。
取り急ぎ、nginxのエラーログとアクセスログを調べてみました。
nginxのエラーログ
1 2 |
2014/11/24 12:34:05 [error] 24459#0: *83446 upstream timed out (110: Connection timed out) w hile reading response header from upstream |
nginxのアクセスログ
1 |
[24/Nov/2014:12:33:52 +0900] "GET /archives/833 HTTP/1.1" 504 |
実際、ブラウザからアクセスしようとすると、504 Gateway Time-outとなってしまいます。
504 Gateway Timeoutの意味は以下にまとめました。
以下の記事でまとめた監視サーバーを見てみます。
205時間39分連続で安定稼働していたサーバーが、Gateway Timeoutでアクセスできなくなっていたことが分かります。
ちょっとショックです。
upstream timed out (110: Connection timed out) の解決方法
nginxでFastCGIを使っている(php-fpmを使っている)場合、以下の設定を試してみます。
/etc/php-fpm.d/www.conf に以下の行を追加します。
1 |
request_terminate_timeout = 300 |
php-fpmを再起動します。
1 |
# service php-fpm restart |
次に、/etc/nginx/conf.d/wordpress.conf に以下の行を追加します。
1 2 3 |
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のエラーログ
1 2 |
2014/11/24 07:39:59 [warn] 24459#0: *82642 an upstream response is buffered to a temporary f ile /var/cache/nginx/fastcgi_temp/4/60/0000005604 while reading upstream |
/etc/nginx/nginx.conf に以下の行を追加します。
1 |
proxy_buffer_size 8k; |
worker_connections exceed open file resource limit: 1024 の解決方法
ついでに、worker_connectionsを追加します。
/etc/nginx/nginx.conf に以下の行を追加します。
1 2 3 |
events { worker_connections 2048; } |
nginxを再起動します。
1 |
# service nginx restart |
[warn] 2018 worker_connections exceed open file resource limit: 1024
という警告が表示されました。
CentOS 5ではデフォルトのファイルディスクリプタの上限は1024のようです。
実際、
1 2 |
# ulimit -n 1024 |
と表示されます。
/etc/security/limits.conf をエディターで開いて以下の行を追加します。
1 2 |
* soft nofile 2048 * hard nofile 2048 |
この後、rootからexitしてから、再度suコマンドでrootになります。
つまり、su -で読み直せば、/etc/security/limits.conf の設定は反映されます。
1 2 |
# ulimit -n 2048 |
と表示されることを確認します。
再度、nginxを再起動します。
1 |
# service nginx restart |
無事にnginxが再起動されました。
Googleウェブマスターツールで「このサイトマップの URL の一部でレスポンスの遅延が生じています。」
Googleウェブマスターツールでも以下のエラーが表示されていました。
型:警告
問題:このサイトマップの URL の一部でレスポンスの遅延が生じています。
説明:このサイトマップにリストされている URL の一部でレスポンスの遅延が生じています。 サーバーまたはページのコンテンツに問題のある可能性があります。
今回の設定変更で修正されるかしばらく様子を見てみることにします。
さくらのVPSサーバー
↓月額685円からの低価格&高パフォーマンスのVPS、さくらのVPSはコチラ
SSDプランが月々685円から使える!さくらのVPS
コメント
[…] nginxのタイムアウトエラー(upstream timed out (110: Connection timed out) while reading res… […]