有人能告诉我我的设置是怎么回事吗?我在 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 刚刚编辑