極客時間-linux性能優化 26 如何找出狂打日誌的“內鬼”?

動手之前應該想清楚,要用哪些工具來做,以及工具的使用順序又是怎麼樣的?

初步想法:top->iostat->pidstat

步驟1、top輸出

iowait很高,可能運行了io密集型應用

查看內存使用,Buffer/cache的內存佔用高達6G多,需要確認下緩存的使用是否合理?

 

步驟2、iostat輸出

每秒寫磁盤請求數是 64 ,寫大小是 32 MB,寫請求的響應時間爲 7 秒, 而請求隊列長度則達到了 1100。 超慢的響應時間和特長的請求隊列長度,進一步驗證了 I/O已經飽和的猜想。此時,sda 磁盤已 經遇到了嚴重的性能瓶頸。

 

步驟3、pidstat或iotop

輸出中顯示只有python的寫量比較大,此時我們把python進程的pid號記住。

前面講過,讀寫文件必須通過系統調用完成。觀察系統調用情況,就可以知道進程正在寫的文件。可採用strace工具

 

lsof 專門用於查看進程打開的文件列表,這裏的文件包括目錄、塊設備、動態庫、網絡套接字等。

lsof -p pid

FD:表示文件描述符

TYPE:文件類型

NAME:文件路徑

從而能定位到進程打開了哪些文件,和我們strace中尋找到的已打開日誌文件名稱是否符合?

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章