Ubuntu 上的 MySQL IOWAIT 非常高

Ubuntu 上的 MySQL IOWAIT 非常高

有人能告诉我我的设置是怎么回事吗?我在 ubuntu 上有一个 mysql 服务器,它定期产生非常高的 iowait。持续时间长达 10-20 分钟。在此期间,系统和数据库几乎不可用。使用这个数据库时,我感到很卡。在此期间我检查了 vmstat,它显示的数字如下

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1 22      0  34712   8260 583416    0    0   660   935   76   99  6  2 84  6
 0 25      0  34560   8280 582932    0    0 42360 27008 2304 1804  9  3  0 84
 0 29      0  34560   8320 583676    0    0 41160 21524 2360 1763  4  4  0 92
 3 20      0  35912   8328 581532    0    0 12940  6856  766  764  1  0  0 99
 1 30      0  34512   8348 581804    0    0  4532  3748  925 1373  4  4  0 92

因此 iowait 很大。我猜想配置了 4 GB 的 innodb 池并且数据库大小约为 6-8 GB 的 MYSQL 正在交换。在此期间,当我使用 df 时,我看到根驱动器几乎已满,显示为 95%。当我在几分钟内重新启动 mysql 时,它重新启动并且一切恢复正常。根驱动器(10GB)上的空间恢复到 25%。我在 amazon ec2 上的 ebs 设备上运行 mysql。

我有什么选择?盒子是 8gb 的 ubuntu 10.4 大实例。

我将非常感激任何帮助,因为我已经在谷歌上搜索并尝试解决这个问题好几个星期了。谢谢

答案1

这需要大量的磁盘 I/O。

您可能想要使用 iotop 检查生成 I/O 的是什么(备份?)。mysql 进程列表可能会给你(我们?)更多线索。另外,尝试运行mysqltuner.pl针对数据库管理系统。

答案2

我的云提供商(不是亚马逊)也遇到过类似的问题...我用 sysbench 做了一些基准测试来检查磁盘性能

Gold Cloud 使用 SAN 存储...

SRV1 (gold)
Read 0b  Written 10Gb  Total transferred 10Gb  (53.76Mb/sec)
Read 10Gb  Written 0b  Total transferred 10Gb  (22.627Mb/sec)

SRV2 (gold)
Read 0b  Written 10Gb  Total transferred 10Gb  (58.654Mb/sec)
Read 10Gb  Written 0b  Total transferred 10Gb  (21.617Mb/sec)

之后,我将服务器迁移到了所谓的银云,使用共享 SAS 磁盘。

SRV1 (silver)
Read 0b  Written 10Gb  Total transferred 10Gb  (106.12Mb/sec)
Read 10Gb  Written 0b  Total transferred 10Gb  (78.24Mb/sec)

SRV2 (silver)
Read 0b  Written 10Gb  Total transferred 10Gb  (103.67Mb/sec)
Read 10Gb  Written 0b  Total transferred 10Gb  (98.747Mb/sec)

我的mysql备份前后对比:

备份开始时间 周五 6 月 24 日02:20:02快速公交 2011

备份结束于 6 月 24 日(周五)03:07:01快速公交 2011

备份开始时间 星期六 6 月 25 日02:20:02快速公交 2011

备份结束 6 月 25 日(星期六)02:36:44快速公交 2011

答案3

谢谢大家,看起来有了更多的内存问题几乎消失了,每天只有一次短暂的 IOWAIT。我猜答案是更多的内存。– user330026 刚刚编辑

相关内容