我遇到了高IO等待的问题。我测试过一些事情有以下的硬件和软件在磁盘上写入时发生较高的IO速率并阻止SQL INSERT语句
- 物理机配件(HP ProLiant),Debian的5,MySQL 5.1中,硬件RAID,EXT3-FS
- 虚拟机上安装VMware ESX 4(HP的ProLiant) Debian的5,MySQL 5.1中,硬件RAID,EXT3-FS
- 虚拟机Xen的4,Debian的6中,MySQL 5.5,软件RAID,EXT3-FS
现在出现这种情况:在磁盘上复制一些大的文件时,我在'顶部'可以看到很高的等待率,其他进程将被阻止。例如:
dd if =/dev/urandom of =。/ foo.txt count = 1000 bs = 1M(用于创建大文件) cat foo.txt foo.txt foo.txt foo.txt foo。 txt> foo.new(发送到/ dev/null只在磁盘上读取)
'cat'正在运行我无法启动另一个复制过程。另外(这也是最大的问题)在mysql数据库中运行的INSERT语句被阻塞,直到它们正确退出。使用'innotop',我可以看到在状态'释放项目'(在MySQL 5.5中这是状态'查询结束')持有mysql的数十个进程,直到'cat'结束。执行mysqldump时也会发生阻塞INSERT语句的情况。我现在应该做什么没有数据库备份了?所有基于ext3和scheduler的系统都被设置为'cfg'。我用'最后期限'试了一下,似乎有一点帮助,但并不是所有的情况。我仍然无法找出原因!?而这个问题似乎是如此复杂:-( 看起来像大规模的写作会导致这个问题。它可能是一个坏的调度程序IO处理?