2011-03-23 44 views
0

我遇到了高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处理?

回答

0

我发现了一个提示改变linux io调度器(cat /sys/block/[dev]/queue/scheduler)的地方。这有点帮助,但我相信,当某些并行任务(或进程)具有如此大的工作负载时,不会有解决方案。

0

这可能与您的控制卡上的缓存有关。确保缓存工作,否则这可能发生,如果你正在运行的虚拟机。

如果您还没有准备好,here是在哪里找到“HP阵列配置实用程序CLI用于Linux”

有时它可以报告电池没有充电,你应该确保在这种情况下你有最新的固件,因为这可以修复充电过程中的一些错误ocess。