core檔案對問題查詢非常有幫助,大部分時候我們能根據core檔案直接定位到問題,但當出現記憶體亂掉的情況時,core的backtrace可能也不能指出問題源頭。最近線上問題較多,針對dataserver出現的問題做個總結:
1. 如果在read/write時coredump,則多是因為磁碟故障(或是檔案系統崩潰),io的一些嚴重問題可通過dmesg檢視,如果出現medium error,ext4-fs error(device sdx), device offlined, i/o error, rejecting i/o to dead device之類的關鍵字,就說明磁碟已經出問題了,如果是檔案系統出問題,remount一下disk應該能正常工作;
2. 如果在讀寫index時coredump(每個block的索引通過mmap直接對映到記憶體),則多是由於訪問到還沒有map或是已經remap的記憶體,出現過的場景包括:
3. **中的assert失敗,也會導致coredump,但這個是可預知的,在**中加assert,說明執行到這個地方某些資料很關鍵,必須確保其為某個值,否則繼續執行下去可能導致不可預知的後果;比如我們認為當dataserver執行時分配不到記憶體,則認為系統已經出問題了,讓程序直接coredump。
4. dataserver cpu利用率持續偏高,這時需要先確定是哪些執行緒在占用cpu,通過top -p pid檢視這個dataserver的負載情況,輸入h命令顯示執行緒的資訊,可以看出哪些執行緒是罪魁禍首,根據執行緒tid與pstack的輸出對照下,就能看出執行緒正在幹什麼,問題也就定位出來了,出現過的場景包括:
TFS Dataserver記憶體問題分析
12月03日03 50左右,有多台dataserver ds 記憶體占用飆公升,如10.246.70.71 dataserver 3,常駐記憶體突然飆公升到21g,並且一直沒有釋放。檢視dataserver的日誌,發現大量的read v2失敗 返回值主要是 8025 block不存在 8016 檔案...
github常見操作和常見錯誤!
如果輸入 git remote add origin git github.com djqiang github帳號名 gitdemo 專案名 git 提示出錯資訊 fatal remote origin already exists.解決辦法如下 1 先輸入 git remote rm origi...
github常見操作和常見錯誤!
如果輸入 git remote add origin git github.com djqiang github帳號名 gitdemo 專案名 git 提示出錯資訊 fatal remote origin already exists.解決辦法如下 1 先輸入 git remote rm origi...