松花皮蛋的黑板報
  • 分享在京東工作的技術感悟,還有JAVA技術和業內最佳實踐,大部分都是務實的、能看懂的、可復現的

掃一掃
關注公眾號

快速定位磁盤IO異常的套路

博客首頁文章列表 松花皮蛋me 2019-03-10 11:35

一、性能指標

1、存儲空間的使用情況

2、索引節點的使用情況

3、緩存使用情況,包括頁緩存、目錄項緩存、索引節點緩存和各個具體文件系統(如ext4\xfs)的緩存

4、磁盤本身情況,如使用率、IOPS、吞吐量、響應時間、讀寫類型、讀寫比例、讀寫大小、存儲類型

二、性能工具

三、套路

1、先用iostat發現磁盤IO性能異常
2、再借助pidstat,定位到進程
3、分析進程的IO行為
4、結合應用程序的原理,分析IO的來源

進程IO行為分析Strace用法:

strace -tt -T -f -e trace=file -o /export/servers/strace.log -s 1024 -p 18062

-tt 在每行輸出的前面,顯示毫秒級別的時間
-T 顯示每次系統調用所花費的時間
-v 對于某些相關調用,把完整的環境變量,文件stat結構等打出來。
-f 跟蹤目標進程,以及目標進程創建的所有子進程
-e 控制要跟蹤的事件和跟蹤行為,比如指定要跟蹤的系統調用名稱,trace, abbrev, verbose, raw, signal, read, write
-o 把strace的輸出單獨寫到指定的文件
-s 當系統調用的某個參數是字符串時,最多輸出指定長度的內容,默認是32個字節
-p 指定要跟蹤的進程pid, 要同時跟蹤多個pid, 重復多次-p選項即可

-e trace=file 和跟蹤和文件訪問相關的調用(參數中有文件名)
-e trace=process 和進程管理相關的調用,比如fork/exec/exit_group
-e trace=network 和網絡通信相關的調用,比如socket/sendto/connect
-e trace=signal 和信號發送和處理相關,比如kill/sigaction
-e trace=desc 和文件描述符相關,比如write/read/select/epoll等
-e trace=ipc 和進程通信相關,比如shmget等

黑龙江6+1开奖结果查询