問題描述
我最近開發了一個C++ 多線程程序,測試沒有問題,封裝docker測試也沒有問題,然后提交給客戶了,然后在他那邊測試有問題,不定時、不定位置異常中斷,以前一直認為只要封裝了docker就萬事大吉,測試提交肯定沒有問題,突然冒出這個問題,有點慌,不知道代碼上再要怎么改。然后不斷重跑測試,測試中發現一個異常情況,就是每次中斷都有一個不起眼的Killed提示,如下圖
問題分析
開始我以為是代碼中進行了邏輯控制,搜索Killed沒有找到,然后借助AI進行排查這個問題,AI回答如下:
解決方案(docker desktop 版本)
當然現在知道問題原因了,可以搜索各種帖子來解決這個問題。我這里是用Windows 版本的docker desktop ,直接加載鏡像運行容器的,所以與Linux版本的操作有所不同,特此記錄
1、開啟docker監控
在控制臺執行docker stats,進行運行容器資源進行監控
docker stats
監控界面不斷刷新,可以看到內存、CPU占用等等信息
通過上圖一看內存只有2G,所以肯定需要加大內存
2、增加內存
網上很多,通過在命令中增加 -m指定內存容量
docker run -itd -m 8g -v D:/:/D d7e770648fa4 /bin/bash
但是上面這個方法對于docker desktop失效,因為docker desktop最大權限來自于軟件界面上的操作,所以正確打開姿勢如下:
2.1 打開設置界面
2.2 、打開Resources設置
果然,就是這里設置了內存限制2G,還有交換內存1G
往后面調整好,點擊Apply按鈕即可(注意:這里要注意自己電腦實際內存多少,要少于自己電腦本身內存,否則后面電腦特別卡,應用成功后這部分內存直接劃分到應用了,宿主電腦用不了)
docker desktop 測試監控技巧
1、選擇自己運行的容器
2、鼠標左鍵點進去,彈出如界面,選擇stats按鈕,在這里監控程序跑的一舉一動
就此!!!