如何识别重写磁盘?

我有运行CakePHP应用程序的服务器的这个问题。 服务器非常慢,我首先想到它是应用程序的问题,但后来我发现恒定的5-6MB / s写入磁盘。

find这样一个重写的原因最简单的方法是什么?

服务器正在运行Gentoo。

安装iotop ,并find哪个程序正在做。

作为Dstat的作者,我会指出其他的select。 您可以很容易地看到哪个进程消耗了最多的I / O带宽:

dstat -ta --top-bio 

或者dstat -ta –top-io

第一个是顶层块I / O,第二个是顶层I / O(包括caching)。 这可以帮助你validation,如果这是你所期望的(消费者以及消费)。

还有一些插件可以帮助您识别磁盘利用率:

 dstat -tdf --disk-util 

所以,如果你有I / O的瓶颈,这将告诉你哪个磁盘被卷入,这样你就可以看到在这个端口上可以做些什么。

如果您正在对特定(networking)文件系统进行故障排除,则可以使用其他插件来获取有关这些文件系统的更多信息。 Dstat还具有其他指标(cpu,虚拟机,虚拟化等)的插件,根据您需要可视化的内容,您可以编写自己的插件,或修改现有的插件以准确显示您需要关联的内容。

但是,如果您需要帮助,想要贡献或有一个漂亮的新想法,请与我联系,看看我们可以继续…

你可以使用花哨的dstat工具

从dstat手册页 – 'dstat -M time,cpu,net,disk,sys,load,proc,topcpu'。 dstat安装了大多数发行版,所以安装iotop的速度更快。

尝试vmstat和iostat

您可以使用以下命令在syslog中转储磁盘活动(以及生成它的pid):

 echo 1 > /proc/sys/vm/block_dump 

在发布之前,请确保您的系统日志不在一个块设备上,否则最终会陷入无限循环。