По какой-то причине при запуске одной команды rsync я получаю от 1 МБ / с до 2 МБ / с, даже когда я подключаю 2 сервера, оба подключены к портам 1 Гбит / с.
rsync -v --progress -e ssh /backup/mysqldata/mysql-bin.000199 root@XXX.XXX.XXX.XXX: /secondary/mysqldata/mysqldata/mysql-bin.000199
У меня есть более 800 ГБ данных для передачи, разделенных примерно на 500 файлов, начиная с:
mysql-bin.000 *
Я обнаружил, что одновременный запуск 25-30 rsync из отдельных окон SSH дает мне более 25 МБ / с, но мне потребуются часы, чтобы запустить все это вручную.
Есть ли способ получить 25 МБ / с с помощью одной команды rsync?
OpenSSH известен тем, что имеет ограничения на размер окна, которые не очень удобны для соединений с высокой задержкой. Чтобы определить минимальный размер окна для желаемой пропускной способности (пока игнорируем другие накладные расходы):
Window size = throughput * latency
Итак, если вы хотите 25 МБ / с (200000000 бит / с) с задержкой 25 мс (0,025 секунды):
Window size = 200,000,000 * 0.025 = 5000000.0 bits
Если разделить на 8, получается примерно 625 КБ окна. Давайте перевернем его и посмотрим на окно размером 64 КБ (внутреннее ограничение во многих версиях OpenSSH) на вашу задержку:
throughput = 512000 bits / 0.025s latency = 20480000.0 bits/sec = ~2.5MB/sec
Это довольно близко к тому, что вы видите (у вас могут быть и другие накладные расходы).
Итак, я бы проверил в следующем порядке:
Производительность SSH может сильно различаться в зависимости от того, включено ли сжатие.