新聞中心
概述

今天主要分享兩個(gè)命令,比較多用來分析進(jìn)程具體調(diào)用,平時(shí)排查問題會(huì)用到比較多的。
pstack
pstack用來跟蹤進(jìn)程棧,這個(gè)命令在排查進(jìn)程問題時(shí)非常有用,比如我們發(fā)現(xiàn)一個(gè)服務(wù)一直處于work狀態(tài)(如假死狀態(tài),好似死循環(huán)),使用這個(gè)命令就能輕松定位問題所在;可以在一段時(shí)間內(nèi),多執(zhí)行幾次pstack,若發(fā)現(xiàn)代碼??偸峭T谕粋€(gè)位置,那個(gè)位置就需要重點(diǎn)關(guān)注,很可能就是出問題的地方;
1、安裝pstack
- yum install *pstack* -y
2、分析mysql進(jìn)程
- ps -ef|grep mysql
3、將進(jìn)程的棧跟蹤信息寫入文件pstack.log
- pstack 2313 >> pstack.log
- pstack 2313 >> pstack.log
- pstack 2313 >> pstack.log
4、如下所示,可以看到函數(shù)調(diào)用關(guān)系為:_start->__libc_start_main->connection_event_loop->listen_for_connection_event->poll.
strace
strace常用來跟蹤進(jìn)程執(zhí)行時(shí)的系統(tǒng)調(diào)用和所接收的信號(hào)。 在Linux世界,進(jìn)程不能直接訪問硬件設(shè)備,當(dāng)進(jìn)程需要訪問硬件設(shè)備(比如讀取磁盤文件,接收網(wǎng)絡(luò)數(shù)據(jù)等等)時(shí),必須由用戶態(tài)模式切換至內(nèi)核態(tài)模式,通過系統(tǒng)調(diào)用訪問硬件設(shè)備。strace可以跟蹤到一個(gè)進(jìn)程產(chǎn)生的系統(tǒng)調(diào)用,包括參數(shù),返回值,執(zhí)行消耗的時(shí)間。
1、安裝strace
- yum install -y strace
2、strace分析
- strace cat /dev/null
這里每一行都是一條系統(tǒng)調(diào)用,等號(hào)左邊是系統(tǒng)調(diào)用的函數(shù)名及其參數(shù),右邊是該調(diào)用的返回值。 strace 顯示這些調(diào)用的參數(shù)并返回符號(hào)形式的值。
strace 從內(nèi)核接收信息,而且不需要以任何特殊的方式來構(gòu)建內(nèi)核。
3、跟蹤可執(zhí)行程序
- strace -f -F -o ~/straceout.txt myserver
-f -F選項(xiàng)告訴strace同時(shí)跟蹤fork和vfork出來的進(jìn)程,-o選項(xiàng)把所有strace輸出寫到~/straceout.txt里 面,myserver是要啟動(dòng)和調(diào)試的程序。
4、跟蹤服務(wù)程序
- strace -o output.txt -T -tt -e trace=all -p 2313
跟蹤2313進(jìn)程的所有系統(tǒng)調(diào)用(-e trace=all),并統(tǒng)計(jì)系統(tǒng)調(diào)用的花費(fèi)時(shí)間,以及開始時(shí)間(并以可視化的時(shí)分秒格式顯示),最后將記錄結(jié)果存在output.txt文件里面。
分享文章:詳解進(jìn)程棧分析的兩個(gè)命令:Pstack和Starce
分享路徑:http://fisionsoft.com.cn/article/cohdigj.html


咨詢
建站咨詢
