亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

nginx?http?499錯(cuò)誤碼詳解以及解決辦法

 更新時(shí)間:2024年01月12日 15:38:27   作者:不喝咖啡會(huì)困死星人  
HTTP狀態(tài)碼出現(xiàn)499錯(cuò)誤有多種情況,499錯(cuò)誤是什么?這篇文章主要給大家介紹了關(guān)于nginx?http?499錯(cuò)誤碼以及解決辦法的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下

背景

499作為nginx自定義的狀態(tài)碼,不像400、401、500、502等常見(jiàn)的http狀態(tài)碼,很多不太常用nginx的人可能并不能清楚理解他的含義,本文將簡(jiǎn)單介紹一下499狀態(tài)碼的含義,以及出現(xiàn)后的排查和處理思路,以及proxy_ignore_client_abort參數(shù)是否能有效。

499是什么

nginx 對(duì)499的定義是  client has closed connection。這個(gè)定義比較模糊,簡(jiǎn)單來(lái)說(shuō)就是nginx在完成響應(yīng)之前客戶端斷開(kāi)了連接。

499是如何產(chǎn)生的

根據(jù)上面的定義,499產(chǎn)生的核心原因是客戶端在nginx完成響應(yīng)之前斷開(kāi)了連接??梢圆惶珖?yán)謹(jǐn)?shù)母爬ň褪?strong>nginx完成的響應(yīng)時(shí)間超過(guò)了客戶端的超時(shí)時(shí)間。

排查思路

上面對(duì)499產(chǎn)生原因的概括其實(shí)不太準(zhǔn)確,實(shí)際上造成499的原因有很多,接下來(lái)我就介紹主要的排查思路,以及我平時(shí)比較常見(jiàn)的幾種情況。

nginx作為火了很多年的高性能web服務(wù),有許多的應(yīng)用場(chǎng)景,我選擇比較常見(jiàn)的反向代理服務(wù)場(chǎng)景來(lái)介紹一下

在上述架構(gòu)下,客戶端發(fā)起一個(gè)請(qǐng)求大約要經(jīng)歷下面這些階段

這只是一個(gè)比較簡(jiǎn)單的流程,實(shí)際上會(huì)更復(fù)雜一些,比如中間可能還是一些網(wǎng)絡(luò)設(shè)備已經(jīng)其他的基礎(chǔ)服組件。

499的觸發(fā)時(shí)機(jī)

由于499是nginx記錄的狀態(tài)碼,所以客戶端斷開(kāi)連接的時(shí)機(jī)是要在nginx接收HTTP請(qǐng)求行,到nginx發(fā)送響應(yīng)這個(gè)區(qū)間內(nèi),所以如果客戶端在DNS解析或者TCP建連之前就超時(shí)的話是不會(huì)觸發(fā)499的,畢竟請(qǐng)求都沒(méi)有到達(dá)nginx。如果nginx已經(jīng)開(kāi)始返回響應(yīng)了,此時(shí)客戶端就斷開(kāi)連接的話,不會(huì)記錄499,會(huì)以響應(yīng)的狀態(tài)碼為準(zhǔn),比如200。

499的影響

上面說(shuō)過(guò),499代表客戶端超時(shí)斷開(kāi)了連接,大部分情況下499代表請(qǐng)求失敗了,需要根據(jù)業(yè)務(wù)場(chǎng)景評(píng)估影響。比如如果客戶端有重試邏輯, 499之后重試成功,那么實(shí)際上可能不會(huì)有很大的影響。

499還有一個(gè)比較容易被忽視的影響,由于499代表客戶端斷開(kāi)了連接,那么客戶端重試的時(shí)候意味著會(huì)重新建立tcp連接甚至重新tls握手,在一些高并發(fā)的場(chǎng)景下,大量的499導(dǎo)致的客戶端重試可能會(huì)對(duì)服務(wù)端造成一定的壓力,此時(shí)我們需要考慮在服務(wù)端做一些降級(jí)策略,減少499造成的重試壓力。

499的排查方向

我們之前提到過(guò),499觸發(fā)的根本原因是nginx返回的響應(yīng)時(shí)間超過(guò)了客戶端的超時(shí)時(shí)間,所以我們一般有下面幾個(gè)排查方向:

1. 后端響應(yīng)時(shí)間是否過(guò)長(zhǎng)

這里的后端是一個(gè)比較籠統(tǒng)的說(shuō)法,實(shí)際的后端邏輯中可能還包含數(shù)據(jù)庫(kù)的訪問(wèn)以及api的調(diào)用等,我們可以先通過(guò)查看nginx 499的訪問(wèn)日志中的upstream_response_time 字段確認(rèn)后端處理時(shí)間是否明顯增加,如果是的話可以再進(jìn)一步定位異常的環(huán)節(jié)。

2. nginx處理時(shí)間是否過(guò)長(zhǎng)

需要查看nginx服務(wù)器的負(fù)載,比如cpu idle,load,網(wǎng)卡流量,io等是否有明細(xì)的升高或不足, nginx一般作為統(tǒng)一的反向代理服務(wù),會(huì)代理多個(gè)域名,可以通過(guò)分析nginx請(qǐng)求日志,查看499的是否具有普遍性,如果在不同的域名,不同的后端服務(wù)中均有大量出現(xiàn)。配合之前說(shuō)的nginx負(fù)載問(wèn)題再進(jìn)一步深入定位。

3. 客戶端超時(shí)時(shí)間是否過(guò)短

這種情況需要看下nginx的499的request_time是否都比較短,且?guī)缀跸嗟龋枰タ纯蛻舳舜a中的調(diào)用的超時(shí)時(shí)間是否設(shè)置的不合理。

對(duì)相應(yīng)時(shí)間要求比較高的服務(wù)比較容易出現(xiàn)499,由于http協(xié)議的限制,客戶端想提前終止請(qǐng)求必須關(guān)閉連接,所以比較容易出現(xiàn)499。

4. 客戶端網(wǎng)絡(luò)質(zhì)量是否太差

這種情況服務(wù)端很難確認(rèn),需要有客戶端的訪問(wèn)日志或者使用一些撥測(cè)工具。

以上是一些比較簡(jiǎn)單的定位思路,沒(méi)涉及到一些性能問(wèn)題的排查方向,這個(gè)涉及到服務(wù)、網(wǎng)絡(luò)和操作系統(tǒng)等很多方向的內(nèi)容,這里不展開(kāi)詳談了。

此外網(wǎng)上還有個(gè)傳言是快速post的請(qǐng)求會(huì)導(dǎo)致觸發(fā)nginx 499 。但是這個(gè)說(shuō)法我從未找到具體的代碼支持和復(fù)現(xiàn),并且nginx是以性能著稱的web服務(wù),感覺(jué)不會(huì)有這種限制,個(gè)人傾向是以訛傳訛。

如何解決

通過(guò)上面的排查思路的介紹,我們其實(shí)可以發(fā)現(xiàn)產(chǎn)生499的原因有很多,核心解決思路就是增加客戶端的超時(shí)時(shí)間,加快后端的響應(yīng)速度,提供一些邊緣加速服務(wù)優(yōu)化客戶端的訪問(wèn)鏈路等等。但是499終究是一個(gè)客戶端行為,我們?cè)诜?wù)端側(cè)是很難完全解決的,根據(jù)業(yè)務(wù)場(chǎng)景的不同,可以自行評(píng)估499的重要程度,一般的業(yè)務(wù)場(chǎng)景少量偶發(fā)的499不需要特別關(guān)注。

proxy_ignore_client_abort 有用嗎?

然后就是簡(jiǎn)單聊一下 nginx的   proxy_ignore_client_abort 這個(gè)參數(shù)。nginx官方的解釋是:

Determines whether the connection with a proxied server should be closed when a client closes the connection without waiting for a response.proxy_ignore_client_abort:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ignore_client_abort

nginx默認(rèn)會(huì)在client關(guān)閉連接的時(shí)候,同時(shí)關(guān)閉nginx向上游服務(wù)(后端)的連接,這個(gè)參數(shù)開(kāi)啟后,nginx將不會(huì)同步關(guān)閉后端服務(wù)連接,后端服務(wù)完成響應(yīng)后,此次請(qǐng)求nginx也將不會(huì)記錄499狀態(tài)碼,而是記錄后端對(duì)應(yīng)的響應(yīng)狀態(tài)碼。

不知道從什么時(shí)候這個(gè)參數(shù)被傳為可以是“解決”499的方法,然后如果你閱讀了我上面寫(xiě)的內(nèi)容后,應(yīng)該會(huì)明白,這個(gè)參數(shù)不是解決499而是忽略499。并且一般我是不建議開(kāi)啟此參數(shù)的。主要有這幾個(gè)原因:

1. 修改了響應(yīng)的狀態(tài)碼,掩蓋異常請(qǐng)求

開(kāi)啟這個(gè)參數(shù)后nginx的請(qǐng)求日志便和客戶端的記錄不一致。比如如果客戶端已經(jīng)超時(shí),但是nignx這邊仍然記錄的一條200狀態(tài)碼的訪問(wèn)日志,這種后續(xù)問(wèn)題排查和定位的時(shí)候,可能會(huì)提高排查難度。并且掩蓋了499這一異常狀態(tài)碼,不利于及時(shí)發(fā)現(xiàn)異常。

2. ??????會(huì)浪費(fèi)后端資源

客戶端發(fā)起了一些很重的請(qǐng)求超時(shí)后,可能會(huì)不斷重試,開(kāi)啟此參數(shù)nginx則不會(huì)中斷之前向后端發(fā)起的請(qǐng)求,可能會(huì)導(dǎo)致加重對(duì)后端資源的使用。

所以proxy_ignore_client_abort并不是解決499的方法,大家一定要注意。

總結(jié)

499是由于nginx響應(yīng)完成前客戶端就斷開(kāi)了連接導(dǎo)致的,排查原因一般從客戶端網(wǎng)絡(luò)狀態(tài),超時(shí)時(shí)間以及服務(wù)端的響應(yīng)時(shí)間來(lái)排查。常見(jiàn)的業(yè)務(wù)場(chǎng)景下,少量的499其實(shí)不需要過(guò)多的關(guān)注。

proxy_ignore_client_abort可以忽略499,但不是解決方法,不建議大家開(kāi)啟。沒(méi)有證據(jù)能證明快速post導(dǎo)致nginx499,這個(gè)應(yīng)該是謠傳。

到此這篇關(guān)于nginx http 499錯(cuò)誤碼詳解以及解決辦法的文章就介紹到這了,更多相關(guān)nginx http 499錯(cuò)誤內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nginx服務(wù)器中配置404錯(cuò)誤頁(yè)面時(shí)一些值得注意的地方

    Nginx服務(wù)器中配置404錯(cuò)誤頁(yè)面時(shí)一些值得注意的地方

    這篇文章主要介紹了Nginx服務(wù)器中配置404錯(cuò)誤頁(yè)面時(shí)一些值得注意的地方,包括隱藏Nginx出錯(cuò)頁(yè)面及Header上的版本號(hào)的安全方法,需要的朋友可以參考下
    2016-01-01
  • nginx禁止訪問(wèn).git文件的設(shè)置教程

    nginx禁止訪問(wèn).git文件的設(shè)置教程

    這篇文章主要介紹了nginx禁止訪問(wèn).git文件的設(shè)置教程,.git文件會(huì)包含一份文件列表,如果你的網(wǎng)站是基于git協(xié)作開(kāi)發(fā)的,則必須要注意這個(gè)問(wèn)題,需要的朋友可以參考下
    2014-08-08
  • Nginx?Tomcat負(fù)載均衡動(dòng)靜分離原理解析

    Nginx?Tomcat負(fù)載均衡動(dòng)靜分離原理解析

    這篇文章主要為大家介紹了Nginx?Tomcat負(fù)載均衡動(dòng)靜分離原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Nginx反向代理在Web應(yīng)用中的實(shí)戰(zhàn)分享

    Nginx反向代理在Web應(yīng)用中的實(shí)戰(zhàn)分享

    本文將介紹Nginx反向代理的基本原理和配置,以及如何利用Nginx實(shí)現(xiàn)高可用性和故障轉(zhuǎn)移,最后,我們將探討如何監(jiān)控Nginx反向代理的性能并進(jìn)行日志分析,需要的朋友可以參考下
    2024-08-08
  • Kubernetes之安裝nginx-controller作為統(tǒng)一網(wǎng)關(guān)方式

    Kubernetes之安裝nginx-controller作為統(tǒng)一網(wǎng)關(guān)方式

    這篇文章主要介紹了Kubernetes之安裝nginx-controller作為統(tǒng)一網(wǎng)關(guān)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • nginx修改默認(rèn)端口方法圖文詳解

    nginx修改默認(rèn)端口方法圖文詳解

    我們都知道nginx 默認(rèn)使用80端口,有時(shí)候我們希望nginx運(yùn)行在其他端口,下面這篇文章主要給大家介紹了關(guān)于nginx修改默認(rèn)端口的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • nginx 鏡像中文字符集使用詳解

    nginx 鏡像中文字符集使用詳解

    這篇文章主要為大家介紹了nginx 鏡像中文字符集使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • nginx中root和alias指令的使用

    nginx中root和alias指令的使用

    這篇文章主要介紹了nginx中root和alias指令的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 詳解Nginx如何處理WebSocket連接

    詳解Nginx如何處理WebSocket連接

    在當(dāng)今互聯(lián)網(wǎng)的世界中,實(shí)時(shí)通信變得越來(lái)越重要,WebSocket 作為一種實(shí)現(xiàn)實(shí)時(shí)雙向通信的技術(shù),正被廣泛應(yīng)用于各種場(chǎng)景,而 Nginx 作為一款高性能的 Web 服務(wù)器和反向代理服務(wù)器,在處理 WebSocket 連接方面也有著出色的表現(xiàn),本文介紹了Nginx如何處理WebSocket連接
    2024-07-07
  • Nginx學(xué)習(xí)之如何搭建文件防盜鏈服務(wù)的方法示例

    Nginx學(xué)習(xí)之如何搭建文件防盜鏈服務(wù)的方法示例

    這篇文章主要介紹了Nginx學(xué)習(xí)之如何搭建文件防盜鏈服務(wù)的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10

最新評(píng)論