Процесс создания бэкапов или запуск других тяжёлых скриптов может сопровождаться существенным отъеданием ценных ресурсов процессора и диска. Из-за этого другие задачи, может быть более важные, начинают выполняться с существенными тормозами. В статье об утилитах и способах, которые помогут с этим бороться.
Типичная ситуация. Имеем веб-сервер, на котором по расписанию создаются бэкапы. Естественно, что очень не желательно, чтобы в момент, когда это происходит, падала производительность. Бекапы – это хорошо. Но главное, чтобы веб-сервер исправно выполнял свою основную функцию.
Есть две программы: nice
и ionice
.
nice
— позволяет изменить для программы приоритет выполнения процессором. Формат использования:
nice -n 19 команда
Здесь число 19
задаёт наименьший приоритет. можно использовать цифры в диапазоне от -20
до 19
. Соответственно -20
— это наибольший приоритет. Если приоритет не задается принудительно, то считается, что он равен 0. Примеры использования:
nice -n 19 tar -czf /tmp/pack.tar.gz dir
nice -n 19 backup.sh
ionice
— позволяет изменить для программы приоритет при операциях ввода/вывода. Формат использования:
ionice -c2 -n7 команда
Здесь первое число задаёт класс, а второе приоритет. Класс задаётся цифрой от 1
до 3
, означают они следующее:
- Real time — преимущество при операциях, без обращения внимания на работу других процессов. При этом дополнительно задаётся приоритет от
0
до7
. Минимальный приоритет это7
. - Best Effort — класс используется по умолчанию. Аналогично дополнительно задаётся приоритет от
0
до7
. Минимальный приоритет это7
. - Idle — операции ввода/вывода допустимы только в случае, если их требуют другие программы. В общем, когда диск простаивает без дела. Приоритет в данном случае не задаётся.
Примеры использования:
ionice -c2 -n7 tar -czf /tmp/pack.tar.gz dir
ionice -c3 backup.sh
Можно совместить использование nice
и ionice
, пример:
nice -n 19 ionice -c2 -n7 tar -czf /tmp/pack.tar.gz dir
Можно добавлять эти команды прямо в крон:
0 3 * * * nice -n 19 ionice -c2 -n7 /home/backup_script.sh
В данном случае все команды, которые есть в файле backup_script.sh
будут выполняться с заданными приоритетами.
Если не помогает
Особенно актуально, когда на веб-сервере жутко тормозной диск. Расставленные приоритеты, как показано выше, не дают эффекта.
Существует утилита pv
— это сокращенно pipeviewer. Установка:
apt install pv
Pipe — это канал, конвейер. Такие создаются при упаковке файлов, копировании и т.д. Утилита позволяет смотреть и контролировать их.
Пример упаковки каталога в архив:
tar cvzf - нужный_каталог | pv -L 1m >архив.tar.gz
Здесь при помощи утилиты pv
мы ограничиваем пропускную способность канала до 1Мб в секунду. Значение подбирайте свое, по ситуации.