<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我們伺服器使用者端一直有返回錯誤碼499的紀錄檔,以前覺得比例不高,就沒有仔細查過,最近有領導問這個問題,為什麼耗時只有0.0幾秒,為啥還499了?最近幾天就把這個問題跟蹤定位了一下,這裡做個記錄
我們服務架構和錯誤碼是上面這樣的,上游服務紀錄檔沒有記錄,無法確定kong到上游服務的連線和請求細節。
kong上的紀錄檔 rsp_cost:0.041 rsp_length:0 rsp_status:499 ups_rsp_cost:- ups_rsp_length:0 ups_rsp_status:-
waf上的紀錄檔 rsp_cost:1.045 rsp_length:0 rsp_status:499 ups_rsp_cost:- ups_rsp_length:0 ups_rsp_status:-
看紀錄檔,兩個負載均衡的現象一毛一樣,kong upstream到web服務上,不太確定是upstream 連結的問題或者是讀寫資料的問題,或者是kong自己的問題,根本就沒有反向代理到上游服務
打算在上游服務上抓一下包,看看請求是在kong上出問題了,根本沒到上游服務,還是說已經到了上游服務,上游服務出問題了。
83是kong的ip,82是上游服務的ip
可以看到,83首先發了fin包,表示要斷開連線,之後82也回覆了fin的ack包,之後82還在傳送封包,過了大概0.18秒,82才給83發了fin ack包,表示可以斷開連線了。這時候由於83早就斷開了連線,在這個中間的包,83回覆了RST,我們使用的是長連結,83斷開連線之後,新的連線已經複用這個TCP連線了,這時候83只能回覆RST。大概過程就是這樣的。
kong為什麼要斷開連線?
由於我們使用upstream是長連結,猜測了很多種可能
最後都放棄了這個設定,覺得Nginx應該會處理完請求之後再受到keepalive_requests keepalive_time的限制關閉連線,不可能請求處理一半然後直接主動關閉連線,還有一個原因,我們的Nginx版本是1.13,也沒有這些設定可以修改。
最後懷疑是waf上的問題,waf上請求量太大,沒去waf機器上抓包,猜測waf抓包跟kong的結果是一樣的,然後向前推測waf為什麼要斷開連線,猜測是不是使用者端斷開了連線,如果是使用者端斷開連線的話,所有的看到的紀錄檔現象就是通的。
為了驗證這個猜測,我們在測試環境模擬了一下使用者端主動斷開連線的操作。
我們先在的上游服務上模擬了一個耗時的請求,然後再沒有返回結果的時候主動斷開請求。
class TestController extends BaseController { public function actionTest() { sleep(3); return $this->response->success(array("test","geekbang","es")); } }
然後我們在終端上使用curl請求介面,在三秒之內取消請求。
curl https://test.com/test/test/testctrl+C 取消請求
然後觀察waf的紀錄檔,以及kong的紀錄檔,跟生產出現的499錯誤碼錶現是一樣的。
基本上確定是使用者端主動斷開連線引起的。
看一下proxy_ignore_client_abort說明
Syntax: proxy_ignore_client_abort on | off; Default: proxy_ignore_client_abort off; Determines whether the connection with a proxied server should be closed when a client closes the connection without waiting for a response.
確定當用戶端在不等待響應的情況下關閉連線時,是否應該關閉與代理伺服器的連線。
使用者端不等待響應關閉連線時,預設會關閉與代理伺服器的連線,改為on就是代理伺服器不關閉,直到代理伺服器處理完請求。
在kong上修改設定
proxy_ignore_client_abort on
改了一臺機器,觀察了一天,確定了是因為這個設定,後面把兩臺機器都改了之後就沒有再出現499的錯誤碼。修改了這個設定之後,儘管錯誤碼消失了,但是無效的請求會增加上游服務的壓力,本來這個請求已經無意義被使用者端關閉了,然後上游服務也被關閉了。開啟之後,上游服務不會被關閉,直到請求處理完畢,有利有弊,需要權衡和取捨。
到此這篇關於nginx 使用者端返回499的錯誤碼的文章就介紹到這了,更多相關nginx返回499錯誤碼內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45