记者高使用率的原因

我想弄清楚为什么我的机器上疯了。 这是一个带有内存负载的8核心盒子。 它有~50%的CPU负载。

iotop似乎没有指向任何特定的进程 – 在这里和那里写一些突发(主要是cron开始,一些监控统计生成等)。当我使用sys/vm/block_dump收集写统计,我得到列表喜欢这个:

 kjournald(1352): 1909 sendmail(28934): 13 cron(28910): 12 cron(28912): 11 munin-node(29015): 3 cron(28913): 3 check_asterisk_(28917): 3 sh(28917): 2 munin-node(29022): 2 munin-node(29021): 2 

在哪里被录制的动作只是WRITE。

为什么会这样呢? 我还应该看些什么来限制活跃的活动? 实际上写什么似乎不成比例。

kjournald负责ext3(日志文件系统)的日志。 众所周知,在一定的负载下使用大量的CPU。 除了使用另一个文件系统或禁用日志logging(有效地使fs ext2),没有太多的事情要做。

理论上,您可以使用ext3日志logging的其他模式之一,并检查CPU使用率是否下降,但请记住,每种方法都会影响正在写入磁盘的数据的安全性。 您已经订购了模式,回写模式和“全部”模式。

  1. Ordered:仅限期刊元数据,但确保在将元数据更改提交到期刊之前保存与元数据相关的数据。
  2. 回写:仅logging日志,但不能保证数据在日志提交前保存。
  3. 日记:一切都是日记,数据和元数据。 这可能是缓慢的,但YMMV。

在安装系统时,使用选项data=来设置模式,如data=ordered

默认情况下,你的ext3文件系统将被打开。 每次读取/访问文件或目录时,文件系统将不得不回写磁盘来更新此时间logging。 这意味着,即使您的工作量大部分是基于读取的,您仍然需要点击磁盘来更新每个文件和目录的访问时间,这是我猜测为什么您的kjournald过程正在写入这么多的块。

closures一段时间会大大提高性能,但会破坏POSIX合规性。 看看这篇维基百科文章 ,讨论围绕atime的批评。

要closures一次,只需添加noatime到您的文件系统的挂载选项,或者您可以重新挂载由poigebuild议。 以下是根文件系统的例子:

 mount -o remount,noatime / 

如果数据的完整性不重要,请执行此操作

 iostat -o -a 

确保它真的被logging下来。 这是什么导致我的服务器崩溃。

改变硬盘驱动器将工作。

当你看到你写的5-10MB的数据

http://ubuntuforums.org/showthread.php?t=56621

 sudo tune2fs -O ^has_journal /dev/sda1 sudo e2fsck /dev/sda1 

其中sda1是您的分区的名称

报告结果在评论中,以便我可以进一步检查。

不是为了做,只是提及:

  1. mount -oremount,noatime /fs/being_over/journaled – 作为一个快速猜测镜头(你没有告诉我们你的mount看起来像什么)
  2. 尝试减小日志大小( tune2fs -J …
  3. 切换到Reiser3 (强大的相当长的时间,是的,没有这样一个讨厌的日记 )。