我正在一个大型共享 Ubuntu 服务器上工作,这让我的同事很烦。我的一个进程正在向 MySQL 数据库进行大量插入,这导致整个服务器陷入瘫痪。
MySQL 使用的 CPU 资源和 RAM 资源并不多。如果是这种情况,我可以使用“nice”和“ulimit”工具来限制进程(事实上,我在 MySQL 上使用 nice,但它没有帮助)。相反,MySQL 似乎在进行大量随机磁盘读写操作,因此每当其他人想要从磁盘读取或写入文件时,他们都必须等待一两秒钟,这对于交互式使用来说是不可接受的。
关于如何限制 MySQL 的磁盘 I/O,您有什么想法吗?(我正在寻找操作系统或内核级别的解决方案,而不是更改系统硬件设置的建议)。
我所需要的是在留言板上详细描述的这里。
答案1
ionice
(部分util-linux)可以调整进程的 I/O 优先级,允许在空闲、8 个“尽力而为”和 8 个实时优先级之间进行选择。第 3 类为“空闲”:
ionice -c 3 -p $(pgrep -x mysqld)
schedtool
可以调整总体调度策略,同样,“空闲”也是其中一种选择:
schedtool -D $(pgrep -x mysqld)