Redis崩了,我成功把鍋甩給了隔壁組

2021-10-09 08:10:05 字數 2624 閱讀 7902

專案起不來了!

... 專案又起不來了!

... 又雙叒叕???!!!

上週經常聽到組裡同事說專案又雙叒叕掛了, redis連不上, 筆者在另一套正常的環境忙著開發新需求, 沒空關心這個問題.(ps: 反正我的環境能用(´థ౪థ)σ , 先忙完我的再說).

於是乎, 看了一眼日誌, 連線數過多... emmm, 順手幫同事把redis配置裡連線數上限加了個0, 問題排查什麼的等忙完再說.

err max number of clients reached
終於... 該來的總逃不掉, 筆者用的環境也被搞崩了, 而且是莫名其妙地就涼了.

不過... 因吹斯汀 !

修改連線數上限畢竟治標不治本, 本來連線數上限就是10000, 微服務總共才幾十個, 按理說根本用不完.

肯定有人沒關連線, 查他.

已知:

redis服務重啟後, 用一段時間連線就又滿了. 服務總共幾十個, 配置的一萬連線數正常情況下不大可能用完.

筆者重啟了redis後, 立即連線到redis, 檢視客戶端數量(晚了就連不上了):

$ docker exec -it $(docker ps | grep redis | awk '') redis-cli -a 

127.0.0.1:6379> info...# clientsconnected_clients:391...複製**

tips:

info命令能檢視關於 redis 伺服器的各種資訊和統計數值.

幾分鐘後再次檢視:

127.0.0.1:6379> info

...# clientsconnected_clients:10002...複製**

此時, 連線已經被全部佔滿了.

將全部客戶端資訊儲存到檔案準備抓出這個搞事情的老哥.

127.0.0.1:6379> client list

id=7863 addr=172.18.0.104:56836 fd=6150 name= age=72 idle=72 flags=n db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=pingid=7864 addr=172.18.0.50:56262 fd=6151 name= age=72 idle=72 flags=n db=9 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=pingid=7865 addr=172.18.0.104:56840 fd=6152 name= age=72 idle=72 flags=n db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping...

tips:

client list: 列出全部客戶端資訊.

有了全部的客戶端連線資訊, 就能找出到底是誰的鍋了. 使用命令輸出連線數前五的ip:

$ cat client-list | awk '' | awk -f "[=:]" '' | sort | uniq -c | sort -k1,1nr | head -5

5432 172.18.0.504244 172.18.0.104 43 172.18.0.59 40 172.18.0.54 32 172.18.0.55

到目前為止, 鎖定了172.18.0.50和172.18.0.104兩個ip. 這兩個都是docker內部網路的位址.

tips:

awk ': 輸出第二列, 即ip.addr=172.18.0.104:56836.

awk -f "[=:]" '': 通過等號和冒號拆分addr=172.18.0.104:56836, 並輸出中間的ip.

sort: 排序.

uniq -c: 統計數量並在每列旁邊顯示該行重複出現的次數.

拿到了ip就離目標不遠了, 通過docker inspect能輸出docker例項的資訊, 其中就包括ip.

$ docker inspect --format='} - }}}' $(docker ps -aq) | grep 172.18.0.50

/docker_***xx-service - 172.18.0.50$ docker inspect --format='} - }}}' $(docker ps -aq) | grep 172.18.0.104/docker_yyyyy-service - 172.18.0.104

tips:

docker inspect: 獲取容器/映象的元資料. --format: 用模板格式化輸出.

至此, 定位到了***xx和yyyyy,嗯... 隔壁py (thon)組的服務. 來, 鍋給你.

如果這篇文章對您有幫助,請幫忙點讚一下吧 ( ̄▽ ̄)"

我,把乙個專案帶崩了

我是一名專案經理,在過去的四個月裡,我把乙個專案帶崩了 上線後頻出問題,使用者無法使用 在最近的幾天,我每天都在反思自己,我都在問自己以下幾個問題 我做錯了什麼?我在其中占有多重的因素?以下內容,我將回答以上問題,並在最後說一下我的補救措施。該專案是乙個二次開發專案,第乙個基礎版本 列印申報系統 也...

我是一名專案經理,把乙個專案帶崩了 案例分析

我是一名專案經理,在過去的四個月裡,我把乙個專案帶崩了 上線後頻出問題,使用者無法使用 在最近的幾天,我每天都在反思自己,我都在問自己以下幾個問題 1.我做錯了什麼?2.我在其中占有多重的因素?以下內容,我將回答以上問題,並在最後說一下我的補救措施。1 專案和團隊背景 首先給大家說明一下專案背景,以...

我成功,因為志在要成功,未嘗躊躇。

我成功,因為志在要成功,未嘗躊躇。沒有機會!這真是弱者的最好代詞。不以小事為輕,而後可以成大事。人生的光榮,不在永不失敗,而在於能夠屢敗屢起。達到重要目標有二個途徑 勢力與毅力,勢力只是少數人所有,但堅韌不拔的毅力則多數人均可擁有。它沉默的力量隨著時間發展而至無可抵抗。不會從失敗中尋求教訓的人通向成...