周期性/节奏性磁盘I / O统计:(单调增加的活动)

我的服务器有一个特殊的问题。 磁盘I / O统计数据在过去几周持续​​增长。 从Munin看这个图表:

在这里输入图像说明

从Linode的仪表板中,我可以看到磁盘I / O更精细的图像。 这是循环/节奏图(一天的时间间隔)。 但请注意,即使看起来是周期性的,在数周的时间内,平均磁盘I / O也会持续增长(见上图):

在这里输入图像说明

现在,我做了iotop ,看到kjournald是写磁盘I / O的唯一过程(除了偶尔的rsyslogd – 但是kjournald的磁盘I / O的频率要高得多)。 在上面的图中,I / O的读取部分实际上为零。

为什么即使在没有其他程序写作的情况下也要写作? 为什么写的大小在一天之内变大?

另一个线索:空闲内存也是单调减less,而“缓冲区”增加。 看到这张图:

在这里输入图像说明

PS:服务器只有Apache。 访问日志已禁用,但启用了错误日志。 服务约80个请求/秒。 我们使用Redis作为队列。 我的磁盘正在使用ext3

在黑暗中狂野的拍摄,因为我不知道你的服务器在做什么:

你的服务器是一个Web服务器吗? 也许它有一个经常访问的页面,logging访问常规文本文件(或者,也许SQLite后端?)和一个PHP脚本parsing这个文件在每个页面加载和logging访问此文件? 然后这个文件增长和增长,写入量也是如此。

虽然这看起来不太可能,因为你没有观察任何httpd进程。 无论如何,也许类似的事情呢? 一些经常分析的文件正在增长和增长?

编辑:你已经尝试了一个非常方便的工具blktrace ? 有了这个,你可以跟踪I / O,看看哪些进程正在访问磁盘以及为什么。 试试btrace /dev/sda或者你的磁盘。 至less在Debian / Ubuntu中, btrace命令与blktrace软件包捆绑在一起(如果尚未安装)。

首先,我经常会遇到一个问题,那就是在采样周期之间隐藏着一些非常有用的信息。 但是,这可能不一定是一个问题。

无论如何,一个柜台很less讲述整个故事。 既然你的日常情节在白天确实performance出轻微的增长,至less情况正在变化得足以看到变化。 你不能从你的情节中看出来,因为它们不够细致,事情是否正在平稳地变化,或者可能是一个阶段性的function? 是价值持平50秒,然后跳转? 你只是不能告诉,如果有跳跃,你需要能够将其与其他系统测量相关联。

我build议安装collectl并让它运行几个小时。 然后使用collectl-utils的一部分colplot,你可以得到cpu,disk,network,memory,nfs,tcp,socket的详细图(间隔10秒),可能还有一两件我忘了的东西。 你也可以深入了解你的板和过程发生了什么。

现在你可以看看那些情节,并且比你从rrdtool得到的情节所看到的更详细。 当然,如果情节看起来有趣,你也可以重播收集的时间戳文本,并深入挖掘。

-标记