CentOS 服务器中的高磁盘 I/O 活动

CentOS 服务器中的高磁盘 I/O 活动

我在 CentOS 专用服务器上有大约 16 个网站,在高流量时段遇到了一些问题,似乎是高磁盘 I/O 活动导致了整体速度下降。

我已经安装在顶部,这是我在底部看到的(服务器已重新启动,这就是值如此低的原因):

*** system and process activity since boot ***

PID         RDDSK       WRDSK       WCANCL      DSK     CMD        1/18
2176        1.7G        7.3G        854.4M      39      mysqld
671         1248K       3.0G        0K          13      flush-8:0
566         0K          1.1G        0K          5       jbd2/sda2-8
2401        124.2M      529.1M      22408K      3       crond
2032        2.2G        502.0M      0K          12      nginx
2360        425.8M      115.3M      4188K       2       httpd

flush-8:0 和 jbd2/sda2-8 是我看到的进程iotop在 IO> 列中使用了 99%,它们是在硬盘上写入最多的进程(在 mysql 之后)。从我在 google 上看到的信息来看,这可能是由一些与 ext4 相关的错误引起的,当前内核是:

Linux srvr.com 2.6.32-71.29.1.el6.x86_64 #1 SMP 2011 年 6 月 27 日星期一 19:49:27 BST x86_64 x86_64 x86_64 GNU/Linux

我要求托管支持人员更新内核,他们也尝试过了,但现在他们说服务器无法使用新安装的内核启动,他们不得不回到以前的版本,但他们并没有提供太多帮助。

有人知道如何解决由 flush-8:0 和 jbd2/sda2-8 进程导致的高磁盘使用率问题吗?

答案1

你没有给我们足够的信息让我告诉,但我的第一个预感是你过度使用 RAM,并搅动交换。使用 atop,向我们显示内存列表(按 m),包括标题部分。

不要责怪你的支持。你的内核和 ext4 不太可能是问题所在。

答案2

flush-8:0是内核线程,用于刷新dirtyRAM 缓冲区和/或swap磁盘,jbd2/sda2-8是内核线程,用于文件系统日志记录 - 它们是密集型 IO结果, 不是原因您的问题。

看起来你的问题是 mysql 对磁盘的大量使用。当 JBD 正在使用时 - 看起来正在进行多个写入操作。

检查哪些文件被 mysql 更改或检查其日志、数据库使用情况、表优化以及 mysql 守护进程是否配置为使用尽可能多的 RAM 进行缓存。

您可以使用mysqltuner以获得一般性建议。

如果写入仍然存在,则可能需要增加磁盘速度来获得更多的 IOPS。

检查哪些文件被更频繁地写入。不仅 MB/s 速率很重要,您可能会写入 20 MB,但会比其他人在 200MB 时消耗更多的 IO 操作。

答案3

显然 mysql 不喜欢 ext4。升级内核或将 mysql 数据目录更改为 ext3 分区应该可以解决此问题。 http://ubuntuforums.org/showthread.php?t=1313834&page=2

相关内容