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