Apache-Httpd
Apache:高磁碟讀取負載,沒有請求
在 Ubuntu VM 上,iotop 向我展示了一些“apache2 -k start”程序正在產生持續在 4 M/s 和 7 M/s 之間的總磁碟讀取負載,即使沒有記錄請求也是如此。
lsof 向我展示了 www-data 使用的大約 5000 個正常文件。我怎樣才能確定是什麼導致瞭如此多的磁碟 IO 而根本不應該有呢?
高 I/O 的跡象可能需要跟踪工具來深入了解 I/O 的細節;
strace
是一種常見的方法:strace -e trace=file -ff -o output -y -p $some_httpd_pid_here
-e trace=file
跟踪文件相關操作(還有其他方便的說明符,請參閱精美手冊),但不會顯示read
可能需要確定正在讀取哪些文件描述符的呼叫;為此,-e trace=open,read
或者只是跟踪所有內容,然後 grep 輸出…-ff
跟隨分叉,如果正在生成 CGI 或類似的東西,或者如果您在httpd
主程序啟動時跟踪它,則很好。-o output
與文件互動-ff
並產生output
或output.*
稍後被戳的文件。-y
不能移植到舊版本,strace
但確實省去了找出什麼文件描述符編號 42 或任何引用者的麻煩。(
strace
也可能非常慢;另請參閱 Linuxsysdig
或SystemTap
有關跟踪事物或以其他方式調試核心正在執行的操作的替代方法…)