怎么檢測(cè)Web服務(wù)請(qǐng)求丟失問(wèn)題-創(chuàng)新互聯(lián)

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

創(chuàng)新互聯(lián)建站是一家專(zhuān)注于網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站與策劃設(shè)計(jì),夷陵網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:夷陵等地區(qū)。夷陵做網(wǎng)站價(jià)格咨詢(xún):18982081108

問(wèn)題描述

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

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

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

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

排查過(guò)程

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

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

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

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

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

3、問(wèn)題分析

檢查 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),如下圖展示:

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

那是不是可以認(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ù)還沒(méi)返回就超時(shí)了。如果沒(méi)有 Tracing 把上下文鏈接起來(lái),我們很難通過(guò) Nginx 日志或者 Web 服務(wù)日志來(lái)解釋這個(gè)問(wèn)題(一個(gè)請(qǐng)求,Nginx 返回 499,而 Web 服務(wù)返回 200),如下圖所示:

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

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

標(biāo)題名稱(chēng):怎么檢測(cè)Web服務(wù)請(qǐng)求丟失問(wèn)題-創(chuàng)新互聯(lián)
文章位置:http://www.muchs.cn/article36/dhjdpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃網(wǎng)站改版、商城網(wǎng)站、全網(wǎng)營(yíng)銷(xiāo)推廣、App設(shè)計(jì)、面包屑導(dǎo)航

廣告

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

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)