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

Хороший rsync на удаленной машине

При использовании rsync + ssh для доступа к удаленному компьютеру, есть ли способ "улучшить" процесс rsync на удаленном компьютере (снизить его приоритет)?

Редактируем вопрос для уточнения:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
backups  16651 86.2  0.1   3576  1636 ?        Rs   11:06   0:06 rsync --ser...

(строка rsync обрезана)

Это задание резервного копирования cron, которое обычно выполняется в 4 часа ночи, но когда я просыпаюсь (и фиксирую или использую Bugzilla, размещенную на той же машине), это снижает производительность сервера, поэтому я хотел быстро «взломать», чтобы попытаться исправить это немного.

Вы можете использовать --rsync-path вариант, например.

rsync --rsync-path="nice rsync" foo remotebox:/tmp/
  • Принимая --rsync-path вариант у тебя есть rsync --rsync-path="ionice -c 3 nice -n 12 rsync" localDirectory remoteHost:/tmp/
  • Принимая опция файла конфигурации вы можете изменить или раскомментировать файл /etc/default/rsync в RSYNC_NICE='17' ценность и RSYNC_IONICE='-c3' стоимость

Для обоих ionice значение будет для приоритета жесткого диска

  • 1 -> В реальном времени
  • 2 -> Лучшее усилие
  • 3 -> Ildle (когда какой-либо другой процесс не использует HD)

Обратите внимание, что только для Linux cfq Планировщик действительно реализует классы и приоритеты ввода-вывода. Если удаленный системный администратор выбрал планировщик ввода-вывода noop, deadline или какой-то более экзотический вариант, вы можете обнаружить, что ionice действительно ничего не делает. Должна быть возможность получить высокую производительность от cfq и по-прежнему иметь возможность использовать классы и приоритеты ввода-вывода, настройка cfq правильно.

для отлично значение приоритета процессора

  • -20 (максимально благоприятно для процесса)
  • (по умолчанию 10), если -n не указан
  • 19 (наименее благоприятные для процесса)

Вы можете отключить сжатие по сети, не включая -z аргумент, который может сэкономить время процессора с обеих сторон. Или измените способ использования контрольных сумм rsync, посмотрите --checksum

Быстрое и грязное решение - создать небольшой сценарий-оболочку под названием 'rsync', который затеняет $ PATH перед реальным двоичным файлом rsync, например:

#!/bin/sh
nice -10 /path/to/proper/rsync $*

Или настройте файл authorized_keys так, чтобы он выполнял синхронизацию rsync. (Предполагая, что вы используете ключи ssh).

пример:

command=”/home/user/bin/nice-rsync.sh" ssh-dss asdf....

Теперь в вашем /home/user/bin/nice-rsync.sh

#!/bin/sh
case $SSH_ORIGINAL_COMMAND in
  rsync\ --server*)
    nice -10 $SSH_ORIGINAL_COMMAND
    ;;
  *)
    $SSH_ORIGINAL_COMMAND
    ;;
esac

HTH

Rsync не должен использовать много ЦП. Я сомневаюсь, что вы можете добиться определенной аккуратности с другого конца, но что вы могли бы сделать, так это ограничить полосу пропускания, которую rsync использует с брандмауэром, что в конечном итоге уменьшит объем обработки, который он может выполнить за X времени.

Я так не думаю, вам нужно специальное решение для этого .. используйте ftp