怎么檢測(cè)Web服務(wù)請(qǐng)求丟失問題

這篇文章主要介紹“怎么檢測(cè)Web服務(wù)請(qǐng)求丟失問題”,在日常操作中,相信很多人在怎么檢測(cè)Web服務(wù)請(qǐng)求丟失問題問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么檢測(cè)Web服務(wù)請(qǐng)求丟失問題”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:空間域名、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、雙臺(tái)子網(wǎng)站維護(hù)、網(wǎng)站推廣。

問題描述

最近偶爾有用戶反饋某些 HTTP 接口出現(xiàn)超時(shí)問題,而 web 服務(wù)端的 Trace 監(jiān)控沒有出現(xiàn) http 返回值為 503 等異常情況。出現(xiàn)這種情況一般是web容器出現(xiàn)問題,客戶端連接不上來。本文將主要介紹如何去監(jiān)控這類問題。

我們是用典型的 Web 服務(wù)架構(gòu),應(yīng)用通過域名訪問到我們的 LVS(Linux Virtual Server)機(jī)器,LVS 后面對(duì)應(yīng)了多臺(tái) Web 服務(wù)器。

考慮到無法對(duì) LVS 進(jìn)行跟蹤,而 Web 服務(wù)器(Tomcat 上出現(xiàn)堆積,無法評(píng)估影響范圍)。考慮再三后,我們準(zhǔn)備在Tomcat 和 LVS 上加一個(gè) Nginx,用于追蹤用戶訪問的真實(shí)情況。Nginx 是一款自由、開源的高性能 HTTP 服務(wù)器。通過 Nginx 代碼,我們可以掌握第一手的用戶訪問的真實(shí)情況,本來是打算通過 Nginx 的 Access 日志來做統(tǒng)計(jì), 后來參考 阿里云鏈路追蹤的文檔,用鏈路追蹤可以把 HTTP 的埋點(diǎn)和 Tomcat 連起來看,可以更詳情地發(fā)現(xiàn)問題。

環(huán)境準(zhǔn)備和問題復(fù)現(xiàn)編譯安裝 Nginx 和 Jaeger Agent,具體的安裝過程可以參考 阿里云鏈路追蹤文檔。 測(cè)試環(huán)境:需要重現(xiàn)超時(shí)問題,寫了一個(gè)小程序,開啟 200 個(gè)線程,每個(gè)線程連續(xù)向服務(wù)發(fā)送 500 個(gè)請(qǐng)求??偣蔡峤?100000 個(gè)請(qǐng)求。

排查過程

排查的主題思路, 對(duì)比 Web 服務(wù)端數(shù)據(jù)和 Nginx 服務(wù)端的鏈路統(tǒng)計(jì)數(shù)據(jù),如果兩種的請(qǐng)求數(shù)不一致,那可以確定有請(qǐng)求丟失。再根據(jù)鏈路上的詳情數(shù)據(jù)來確定丟失請(qǐng)求的原因。

1、Web 服務(wù)端數(shù)據(jù)統(tǒng)計(jì)

發(fā)送請(qǐng)求后,發(fā)現(xiàn) web 服務(wù)端一共處理 98717 個(gè)請(qǐng)求,比客戶端少了 1283 個(gè)請(qǐng)求。

2、Nginx 服務(wù)端統(tǒng)計(jì)

查看 Nginx 的請(qǐng)求,一共有 100000 個(gè)請(qǐng)求,說明 Nginx 收到了全部請(qǐng)求,但是進(jìn)入到 Web 服務(wù)上處理的只有 98717 個(gè)請(qǐng)求(通過 javax.servlet.Filter 埋點(diǎn)來監(jiān)控)。

3、問題分析

檢查 Nginx 服務(wù),發(fā)現(xiàn) Nginx 的有些請(qǐng)求的 HTTP 的返回碼 499。如下圖所示:

對(duì)比正常的 HTTP 鏈路,發(fā)現(xiàn) Nginx 的請(qǐng)求的 HTTP 的返回碼 499,只有一個(gè) Span 就返回了,而 HTTP 返回碼為 200 的,可以看到完整的調(diào)用鏈路(鏈路上除了 Nginx 的 Span,還有 Web服務(wù)的 Span),如下圖展示:

我們可以這樣來解釋這個(gè)問題,客戶端流量進(jìn)入 Web 服務(wù)器,如果 Web 服務(wù)器處理不過來(超出可承受的最大流量或者 Web 服務(wù)器本身可能出現(xiàn) FullGC,OOM,死鎖,線程池慢問題), 那客戶端設(shè)置超時(shí)的請(qǐng)求將會(huì)出現(xiàn) 499,未進(jìn)入 javax.servlet.Filter 處理,Web 服務(wù)端看不到任何訪問記錄。

那是不是可以認(rèn)為出現(xiàn) HTTP 返回值為 499 的請(qǐng)求都是服務(wù)端處理失敗的請(qǐng)求?

4、進(jìn)一步排查

我們撈取下 Nginx 上返回 499 的請(qǐng)求,總共 2719條,大于 Web 服務(wù)丟失的 1283 個(gè)請(qǐng)求。這個(gè)數(shù)據(jù)對(duì)不上,是什么原因呢?我們?cè)谧屑?xì)查看了下數(shù)據(jù),有 Nginx 返回 499 的請(qǐng)求,但是 Web 服務(wù)返回了 200。這些請(qǐng)求進(jìn)入 Web 服務(wù)處理程序,但是 Web 服務(wù)還沒返回就超時(shí)了。如果沒有 Tracing 把上下文鏈接起來,我們很難通過 Nginx 日志或者 Web 服務(wù)日志來解釋這個(gè)問題(一個(gè)請(qǐng)求,Nginx 返回 499,而 Web 服務(wù)返回 200),如下圖所示:

把 Nginx 和 Web 容器服務(wù)(Tomcat)的鏈路打通,我們可以查看 HTTP 請(qǐng)求每個(gè)環(huán)節(jié)的狀態(tài),很方便地定位問題。

到此,關(guān)于“怎么檢測(cè)Web服務(wù)請(qǐng)求丟失問題”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

網(wǎng)站名稱:怎么檢測(cè)Web服務(wù)請(qǐng)求丟失問題
網(wǎng)址分享:http://www.muchs.cn/article18/ishjgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、虛擬主機(jī)微信小程序、網(wǎng)站導(dǎo)航、外貿(mào)網(wǎng)站建設(shè)App設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)