内网集群 无法通信_记一次集群内无可用http服务问题排查
記一次集群內(nèi)無可用http服務(wù)問題排查
1.摘要
前一陣子發(fā)現(xiàn)服務(wù)會有偶發(fā)的服務(wù)不可用的情況,記錄一下這個問題的排查過程。
現(xiàn)象是這樣的:每天到了某個時間點(diǎn),就會出現(xiàn)服務(wù)不穩(wěn)定的情況,偶發(fā)接口調(diào)不通。
線上業(yè)務(wù)使用了lvs-nginx-tomcat三層結(jié)構(gòu),首先查看tomcat監(jiān)控,沒有什么特別異常的情況,響應(yīng)時間和錯誤碼沒發(fā)現(xiàn)有什么異常,CPU、IO等等指標(biāo)也都正常。
再查看nginx上的監(jiān)控,發(fā)現(xiàn)在某個時刻這個服務(wù)的5xx報錯突增,大概7、8秒之后又恢復(fù)了。
繼續(xù)在nginx服務(wù)器上找線索,發(fā)現(xiàn)Nginx在那個時間點(diǎn)會出現(xiàn)報錯:
1
2
2015/12/24 10:30:38 [error] 13433#0: check time out with peer: 10.79.40.1xx:80
線上nginx會每秒探測后端所有服務(wù)器的某個uri,如果返回的http狀態(tài)碼是200則認(rèn)為正常,連續(xù)3次探測失敗則摘除探測失敗的服務(wù)器,直到探測成功再恢復(fù)。
從日志中可以發(fā)現(xiàn)nginx在出問題的時間點(diǎn)對于后端所有tomcat的探測請求都出現(xiàn)了問題,導(dǎo)致摘除了所有后端服務(wù)器,在這段時間里請求會報502異常。
從nginx上的日志可以看到探測請求沒有返回,那么請求實(shí)際發(fā)到tomcat了沒有?線上業(yè)務(wù)中的探測頻率是1s/次,于是到tomcat的訪問日志里查找線索,過濾一個nginx對tomcat的所有探測請求:
可用看出從7:00:10-7:00:40左右的探測請求是有丟失的。
前端機(jī)的負(fù)載并不高,于是我們第一時間認(rèn)為這可能是nginx到tomcat服務(wù)器的網(wǎng)絡(luò)有問題。統(tǒng)計了一下線上日志,出問題的機(jī)器集中在某個網(wǎng)段,并且集中在一天之內(nèi)的某幾個時間點(diǎn),這似乎也進(jìn)一步印證了我們的猜測。
但到此為止僅僅是懷疑,為了證明我們的猜測,我們嘗試去復(fù)現(xiàn)問題。我們在nginx上部署了一個簡單的腳本,用curl命令對同樣的tomcat發(fā)起每秒一次的請求,但結(jié)果比較詭異:
監(jiān)測方式
監(jiān)測地址
http版本
頻率
所在服務(wù)器
目的服務(wù)器
問題
nginx
/
1.0
1s
nginx
tomcat
有
curl
/
1.0
1s
nginx
tomcat
無
這跟我們之前的猜測不一致,沒辦法,嘗試在兩端抓包查看網(wǎng)絡(luò)狀況,
tomcat抓包:
nginx抓包:
tomcat服務(wù)器在7:00:10已經(jīng)接收了請求并且回復(fù)了ACK,7:00:13 nginx超時主動斷開連接,7:00:15時tomcat才返回數(shù)據(jù),網(wǎng)絡(luò)的問題被排除了。
http://www.kuqin.com/shuoit/20160201/350382.html
http://chenpipi.blog.51cto.com/8563610/1682450
本文轉(zhuǎn)自Tenderrain 51CTO博客,原文鏈接:http://blog.51cto.com/tenderrain/1901963,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的内网集群 无法通信_记一次集群内无可用http服务问题排查的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python简易版成绩管理系统_Pyth
- 下一篇: python应用于期货_Python期货