エラー原因と対応方法
事象
Nginx でタイムアウトエラーが発生して、エラーログに下記のログが出力された。
・エラー
YYYY/MM/DD hh:mm:dd [error] 99#99: *999 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 99.99.99.999, server: , request: "GET /xxx/yyy HTTP/1.1", upstream: "http://xxx/yyy", host: "99.99.99.999", referrer: "http://xxx/yyy"
原因
Nginx から後続へ渡したデータを処理して Nginx にレスポンスを返すのに時間がかかってタイムアウト設定時間を超えたため、タイムアウトエラーが発生した。Nginx の proxy_read_timeout の設定時間を超えると、このエラーが発生する。
対応方法
この事象を Nginx のタイムアウトの設定で対応する場合は、nginx.conf に proxy_read_timeout を大きくした時間で設定する。
また、proxy_read_timeout 以外にも、タイムアウトの設定には、proxy_connect_timeout、proxy_send_timeout の 2 つがあるため、これも設定しておいたほうがよい。
・nginx.conf
/etc/nginx/nginx.conf
例えば、nginx.conf で下記のようにタイムアウトの時間を設定する。これは、300 秒で設定している。
http { ...省略... proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; ...省略... }
proxy_connect_timeout:Nginx から後続へのコネクションを張るタイムアウト時間
proxy_send_timeout:Nginx から後続に対してデータ送信する際のタイムアウト時間
proxy_read_timeout:Nginx から後続へ渡したデータを処理して Nginx にレスポンスを返す時間のタイムアウト時間
0 件のコメント :
コメントを投稿