Load高,CPUidle很高,這情況太詭異了
Load很高,CPU使用率很低的詭異情況
第一次碰到這種Case:物理機的Load很高,CPU使用率很低
先看CPU、Load情況
如圖一:
vmstat顯示很有多工等待排隊執行(r)top都能看到Load很高,但是CPU idle 95%以上
這個現象不太合乎常規,也許是在等磁碟IO、也許在等網路返回會導致CPU利用率很低而Load很高
貼個vmstat 說明文件(圖片來源於網路N年了,找不到出處)
檢查磁碟狀態,很正常(vmstat 第二列也一直為0)
再看Load是在5號下午15:50突然飆起來的:
同一時間段的網路流量、TCP連線相關資料很平穩:
所以分析到此,可以得出:Load高跟磁碟、網路、壓力都沒啥關係
物理機上是跑的Docker,分析了一下CPUSet情況:
發現基本上所有容器都繫結在CPU1上(感謝 @辺客 發現這個問題)
進而檢查top每個核的狀態,果然CPU1 的idle一直為0
看到這裡大致明白了,雖然CPU整體很閒但是因為很多程式都繫結在CPU1上,導致CPU1上排隊很長,看前面tsar的–load負載截圖的 等待執行程式排隊長度(runq)確實也很長。
物理機有32個核,如果100個任務同時進來,Load大概是3,這是正常的。如果這100個任務都跑在CPU1上,Load還是3(因為Load是所有核的平均值)。但是如果有源源不斷的100個任務進來,前面100個還沒完後面又來了100個,這個時候CPU1前面佇列很長,其它31個核沒事做,這個時候整體Load就是6了,時間一長很快Load就能到幾百。
這是典型的瓶頸導致積壓進而高Load。
為什麼會出現這種情況
檢查Docker系統日誌,發現同一時間點所有物理機同時批量執行docker update 把幾百個容器都繫結到CPU1上,導致這個核忙死了,其它核閒得要死(所以看到整體CPU不忙,最忙的那個核被平均掩蓋掉了),但是Load高(CPU1上排隊太長,即使平均到32個核,這個佇列還是長,這就是瓶頸啊)。
如下Docker日誌,Load飆升的那個時間點有人批量調docker update 把所有容器都繫結到CPU1上:
檢查Docker叢集Swarm的日誌,發現Swarm沒有發起這樣的update操作,似乎是每個Docker Daemon自己的行為,誰觸發了這個CPU的繫結過程的原因還沒找到,求指點。
手動執行docker update, 把容器打散到不同的cpu核上,恢復正常:
總結
- 技術擴充商業邊界,同樣技能、熟練能力能擴充解決問題的能力。 開始我注意到了Swarm叢集顯示的CPU繫結過多,同時也發現有些容器繫結在CPU1上。所以我嘗試通過API: GET /containers/json 拿到了所有容器的引數,然後搜尋裡面的CPUSet,結果這個API返回來的引數不包含CPUSet,那我只能挨個 GET /containers/id/json, 要寫個迴圈,偷懶沒寫,所以沒發現這個問題。
- 這種多個程式繫結到同一個核然後導致Load過高的情況確實很少見,也算是個教訓
- 自己觀察top 單核的時候不夠仔細,只是看到CPU1 的US 60%,沒留意idle,同時以為這個60%就是偶爾一個程式在跑,耐心不夠(主要也是沒意識到這種極端情況,疏忽了)
相關文章
- 【日記】電腦這種機器總是有十分詭異的情況發生(946 字)
- 詭異的”慢查詢“
- C語言之詭異字串C語言字串
- 一個詭異的 Pulsar InterruptedException 異常Exception
- Java程式異常處理的特殊情況Java
- 有這個情況 說明你家的攝像頭被人控制了~
- 看不了帖子了,什麼情況
- python 詭異問題求助各位大哥Python
- .NET Core HttpClient請求異常詳細情況分析HTTPclient
- [20190116]詭異的問題2.txt
- 介面詭異的404問題記錄
- API 路由中介軟體的詭異API路由
- TextView未繪製情況下獲取其寬高TextView
- JS獲取元素寬高的兩種情況JS
- Latex請問這種情況怎麼解決
- 異常、堆記憶體溢位、OOM的幾種情況記憶體溢位OOM
- CO-V價格控制的物料差異情況詳述。
- 一個詭異的"可見性"問題
- Linux終端的8個詭異傢伙Linux
- 詭異!std::bind in std::bind 編譯失敗編譯
- 使用 Arthas 排查 SpringBoot 詭異耗時的 BugSpring Boot
- 這個太簡單了,我也不會
- 請在這幾種情況下匯入TPM管理
- [20220216]為什麼出現這樣的情況.txt
- 請問python遇到這種情況怎麼解決?Python
- 請問這種情況下表關係如何設計
- chrome彈窗在雙屏情況下left居中定位異常分析Chrome
- PHP高併發情況下防止商品庫存超賣PHP
- 記一次詭異的故障排查經歷
- 一個執行緒罷工的詭異事件執行緒事件
- 串列埠使用Pipeline時詭異的ReadOnlySequence問題串列埠
- Redis 也支援全文搜尋?這也太強了Redis
- Spring 快取註解這樣用,太香了!Spring快取
- 這幾個換臉 GitHub 專案太牛了!Github
- Flutter | 日誌還能這麼列印,太秀了!Flutter
- 記一次詭異的Oracle查詢轉換Oracle
- IOS下box-shadow的詭異bug的修復iOS
- 一次詭異的MySQL問題處理故事MySql
- 生產環境一次詭異的空指標問題,竟然反轉了4次指標