1. 程式人生 > >Nginx 499 報錯,tomcat大量超時

Nginx 499 報錯,tomcat大量超時

nginx tomcat 499 超時

今天web大量超時報錯,查看日誌顯示,tomcat鏈接RPC服務timeout,查看tomcat機器和RPC服務所在機器資源都正常。嘗試重啟RPC服務後,web仍然報錯,查看nginx日誌,有大量499報錯。經查詢得知,nginx的499報錯解釋如下:

499 / ClientClosed Request
An Nginx HTTP server extension. This codeis introduced to log the case when the connection is closed by client whileHTTP server is processing its request, making server unable to send the HTTP header back』



原因可能是服務端處理時間太長了,看一下upstream_response_time時間可以了解到後端程序處理了多久。

先了解一下什麽是upstream_response_time和request_time分別是什麽:

request_time:服務端從接受客戶端請求的第一個字節到服務端應用程序處理完發送完響應數據的時間,包括請求數據時間、程序響應時間、輸出響應時間
upstream_response_time:指nginx向後端如php,tomcat等建立連接開始到到處理完數據關閉連接為止的時間。

查看nginx日誌,果然upstream_response_time和request_time都很大,猜測是後臺處理太慢,導致客戶端主動斷開了鏈接。

最後查看db服務器,發現cpu使用率和內存使用率都很高,進而查看『show processlist』,發現mysql處理一條更新花費了很多時間,因為前兩天升級了web的內存和cpu,增大了kvm的內存。應該是tomcat集群處理速度提高,導致db壓力負載過大,sql處理的太慢,客戶端等待時間太長,用戶主動斷開連接。

解決:

升級db服務器的cpu,從8核升級到16核,果然,web不在超時,nginx不再報499錯誤。


本文出自 “11403817” 博客,請務必保留此出處http://11413817.blog.51cto.com/11403817/1950489

Nginx 499 報錯,tomcat大量超時