我正在对昨晚的 linux 服务器性能下降进行故障排除。我在服务器上安装了 sysstat,它每 2 分钟轮询一次。在事件发生的时候,有很多磁盘活动(使用 sar -b 和 sar -d):
05:46:01 PM tps rtps wtps bread/s bwrtn/s
05:46:01 PM 246.26 1.85 244.41 141.65 10524.53
05:58:01 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
05:46:01 PM dev8-0 246.26 141.65 10524.53 43.31 0.09 0.38 0.16 3.92
如您所见,其中大部分是写访问。我想知道的是此时正在写入哪些文件。sar 似乎没有维护这些数据,所以我想知道是否有任何其他实用程序可以监视这种类型的活动。我怀疑有什么方法可以获取任何历史记录,但如果我现在可以安装一些东西,它可能会对下一次事件有所帮助。
iotop
- 它将帮助您识别进程,然后您可以使用lsof -c <process>
列出进程打开的所有打开的文件描述符。或者您可以strace
处理以查看所有当前的低级系统调用。这些实用程序不是用于监控,而是用于实时调查。如果您还需要查看一些历史值,则需要实施适当的监控。
个人推荐:
Sysdig(云)- https://github.com/draios/sysdig/wiki/Sysdig-Examples#disk:
查看磁盘带宽使用率最高的进程
列出使用大量文件的进程
查看读+写字节数排名靠前的文件
打印 apache 一直在读取或写入的顶级文件