1. 程式人生 > >nginx 超時問題: upstream timed out (110: Connection timed out) while reading response header from upstream

nginx 超時問題: upstream timed out (110: Connection timed out) while reading response header from upstream

目錄

錯誤內容

我們可以在error.log 裡面可以看到

錯誤內容:upstream timed out (110: Connection timed out) while reading response header from upstream

錯誤原因

從錯誤日誌我們可以知道,該錯誤是由於nginx 代理去獲取上游伺服器的 返回值超時了。那麼這個問題是什麼導致的:

  1. 該請求獲取的資料比較多,後端處理該請求花費的時間較長。
  2. 也可能是代理伺服器與上游伺服器的網路問題

我們通過定位出錯的url,來排查問題,最終確定問題是由於 該請求需要後端處理的時間比較長。
那麼解決辦法可以是開發人員對該介面進行優化,也可以是我們通過nginx將超時時間設定長些。

錯誤解決辦法

nginx 超時時間設定

官網連結:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_read_timeout

Syntax: proxy_read_timeout time;
Default: proxy_read_timeout 60s;
Context: http,server,location
Defines a timeout for reading a response from the proxied server. The timeout is set only between two successive read operations, not for the transmission of the whole response. If the proxied server does not transmit anything within this time, the connection is closed.

proxy_read_timeout 引數, 該指令是指從上游伺服器兩次成功的讀操作耗時的超時時間,也就意味著從上游伺服器成功讀操作後,過了60S,沒有再從上游伺服器成功讀操作的話,就會關閉該連線。

預設值是 60s ,我們可以設定為240s,或者300s。來應對上游伺服器處理請求慢的問題。

在nginx 的配置檔案 在 http,server,location 三個位置任意一個位置
加上

proxy_read_timeout 240s;