К сожалению, у нас довольно низкая производительность жесткого диска на одном из наших серверов, и как только мы запускаем более крупный процесс копирования, он останавливается, чтобы доставить любой ответ Apache, что действительно плохо.
Есть ли способ ограничить пропускную способность процесса копирования, чтобы он не потреблял всю производительность жесткого диска и по-прежнему оставлял некоторое пространство для Apache и других процессов, чтобы они могли выполнять свою работу?
Вы могли бы попробовать rsync
с установленной опцией ограничения пропускной способности, например, копировать со скоростью ~ 5 МБ / с
rsync -r /path/to/src /path/to/dest --bwlimit=5120 --progress
В --progress
Параметр является необязательным, но будет подтверждать пропускную способность копирования и прогресс. -r
предназначен для рекурсивного копирования каталогов, а не файлов.
К сожалению, мне не разрешено комментировать ответы, поэтому вот небольшое расширение ответа, данного плазмид87: если вы попытаетесь рекурсивно копировать папки, вы должны добавить -r
параметр к команде. Кроме того, он отлично работает.
Лучше всего, ИМХО, запустить cp
обработать nice
г, снижая его приоритет. Это не ограничивает пропускную способность процесса как такового, это ограничивает количество внимания ядра / процессора, которое процесс копирования получает по сравнению со всеми другими процессами в системе. Если Apache имеет нормальный приоритет, он должен иметь возможность нормально работать на сервере, пока идет копирование.
Неясно, являются ли процессы копирования, которые вы выполняете, частью общей рабочей нагрузки сервера или что-то, что можно запланировать, когда на машине небольшая нагрузка.
Если копирование выполняется часто и вы используете ядро> 2.6.25, вы можете найти ionice использования.
На странице руководства:
Эта программа устанавливает или получает класс планирования io и приоритет для программы. Если аргументы не указаны или указан только параметр -p, ionice запросит текущий класс планирования io и приоритет для этого процесса.
Например, чтобы скопировать файл с помощью класса планирования «простаивает», вы можете сделать что-то вроде:
ionice -c 3 cp /tmp/example.gpg /tmp/another_example.gpg
В -c 3
переключатель приравнивается к выбору idle
класс планирования, о котором говорится в руководстве:
A program running with idle io priority will only get disk time when no other
program has asked for disk io for a defined grace period. The impact of idle
io processes on normal system activity should be zero.
Мне кажется, это именно то, что вы ищете.