我的一台服务器有一个独特的问题。磁盘I/O统计在过去几周中一直在增加。请看这张来自Munin的图表:

从Linode的仪表板上,我看到了磁盘I/O的更细粒度的图片,下面是周期性/节奏图(一天的间隔)。但请注意,尽管它看起来是周期性的,但在数周内,平均磁盘I/O仍在不断增加(见上图):

现在,我做了iotop,并且看到kjournald是唯一为磁盘I/O编写的进程(除了occassional rsyslogd --但是kjournald的磁盘I/O的频率要高得多)。在上面的图表中,I/O的读取组件实际上是零。
为什么即使没有其他进程写入,kjournald也要编写?为什么每天写的文章都越来越大?
另一条线索:空闲内存也在单调减少,而“缓冲区”却在增加。见下图:

PS:服务器仅限于Apache。已禁用访问日志,但启用了错误日志。处理大约80次请求/秒。我们使用Redis作为队列。我的磁盘正在使用ext3。
发布于 2010-11-14 09:10:40
在黑暗中疯狂拍摄,因为我不知道你的服务器在做什么:
您的服务器是web服务器吗?也许它有一个频繁访问的页面,它记录对常规文本文件的访问(或者,可能是SQLite后端?)PHP脚本在每个页面加载过程中解析这个文件&记录要访问这个文件吗?然后,该文件不断增长,写入量也随之增加。
虽然这似乎不太可能,因为您没有观察到任何httpd进程。不管怎么说,也许发生了类似的事情?一些定期分析的文件正在增长和增长?
编辑:您是否已经尝试过一个非常方便的工具blktrace?这样,您就可以跟踪I/O,查看哪些进程正在访问磁盘,以及为什么访问。尝试btrace /dev/sda或任何您的磁盘。btrace命令与blktrace包捆绑在一起,至少在Debian/Ubuntu中是这样的,如果还没有为您安装它。
发布于 2010-11-14 12:23:38
首先也是最重要的是,我总是有一个问题,看数据过于频繁地被监测,因为通常有一些非常有用的信息隐藏在采样周期之间。然而,这不一定是一个问题。
在任何情况下,一个柜台很少告诉整个故事。因为你每天的情节确实会在一天中略有增加,至少事情的变化是足够快的,足以看到变化。你无法从你的情节中看出什么,因为它们的粒度不够细,事情是在平稳地变化,还是在一个步长函数中?值是否等于50秒,然后跳转?你只是不知道,如果有跳跃,你需要能够关联到其他的系统测量。
我建议安装hours并让它运行几个小时。然后使用集锦,它是收集器的一部分,你可以得到cpu、磁盘、网络、内存、nfs、tcp、套接字以及我可能忘记的一两件事情的详细情节(每隔10秒)。您还可以深入了解板坯和流程所发生的事情。
现在,您可以查看这些图,并且可以看到比从rrdtool获得的绘图更详细的内容。当然,如果情节中有些东西看上去很有趣,你也可以将收集的内容作为时间戳的文本重播,然后再深入挖掘。
-mark
https://serverfault.com/questions/201655
复制相似问题