限制 cronjob 的 CPU 使用率

限制 cronjob 的 CPU 使用率

我有一个 cronjob,基本上就是mysqldump whatever | gzip > backup.sql.gz。数据库相当大。我注意到,在作业运行时,我的 apache 响应速度要慢得多,CPU 使用率如下

 %CPU  COMMAND 
 15.1  gzip               
 14.1  mysqld             
 13.1  mysqldump 

有没有办法让这项工作使用更少的 CPU,也许代价是花费更长的时间?

答案1

 ionice -c 3 nice mysqldump whatever | ionice -c 3 nice gzip > backup.sql.gz

答案2

您可以使用好的雷尼塞改变进程的优先级。这意味着它们获得的 CPU 访问权会减少。

您可能不想重新调整 mysqld 的优先级,但 mysqldump 和 gzip 可以安全地更改其优先级。

如果你遇到磁盘使用率过高的问题,你可以使用伊奥尼采

答案3

如果您的 Web 应用正在写入“任何”数据库,则它必须等待 mysqldump 完成,因为它默认锁定表。如果是这种情况并且您降低了优先级,则会使问题变得更糟。

首先将数据库转储为纯文本,然后运行 ​​gzip 压缩文件。这样 mysqldump 可以更快完成并释放锁,MySQL 和 Apache 可以在 gzip 运行时继续执行其工作。

相关内容