Назад | Перейти на главную страницу

использование дроссельной заслонки для cronjob

У меня есть cronjob, который в основном не более чем mysqldump whatever | gzip > backup.sql.gz. База данных довольно большая. Я заметил, что пока задание выполняется, мой apache гораздо менее отзывчив, использование процессора примерно такое

 %CPU  COMMAND 
 15.1  gzip               
 14.1  mysqld             
 13.1  mysqldump 

Есть ли способ заставить эту работу использовать меньше ЦП, возможно, ценой того, что она займет больше времени?

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

Если ваше веб-приложение выполняет запись в «любую» базу данных, оно должно дождаться завершения mysqldump, поскольку по умолчанию оно блокирует таблицы. Если это так, и вы снизите приоритет, вы усугубите проблему.

Сначала выгрузите базу данных в виде обычного текста, затем запустите gzip, чтобы сжать файл. Таким образом, mysqldump может завершить работу раньше и снять блокировку, а MySQL и Apache смогут заниматься своими делами, пока работает gzip.

Ты можешь использовать отлично и Ренис изменить приоритет процессов. Это будет означать, что у них будет меньше доступа к процессору.

Вы, вероятно, не захотите изменять mysqld, но mysqldump и gzip могут безопасно изменить свои приоритеты.

Если у вас возникли проблемы с чрезмерным использованием диска, вы можете использовать ionice.