Два ответа по цене одного:
- Цель: более медленная балансировка - Можно написать пользовательский балансировщик, который будет работать медленнее, добавляя временные задержки между каждым циклом баланса.Это может быть использовано для снижения пропускной способности IOPS / диска в тех случаях, когда вы разделяете пропускную способность с другими (предположительно более важными) приложениями.Я мог бы предложить использовать unix 'nice' на ваших демонах или настроить балансировку для использования расписания (см. Документы Mongo).
Примечание: В MongoDB версии 2.4 значение по умолчанию изменилось на primaryThrottle , чтобы проверить, что данные записываются во вторичные серверы, прежде чем перейти к переходу к чанкам.Это может значительно замедлить миграцию чанка, если вы просто отключите своих вторичных серверов.Чтобы это исправить, наберите:
use config
db.settings.update({"_id":"balancer"},{$set:{"_secondaryThrottle":false}})
- Цель: более быстрое балансирование - Мы все знаем, что балансировщику может потребоваться вечность, чтобы уравновесить дико несопоставимые количества чанков, порядка дней.Я НЕ написал такого рода балансировщик, но я легко вижу, каким он может быть.Существует предположение, что за один раз может двигаться только один кусок.Если мы предположим, что у нас есть большое количество сегментов (скажем, 48 из них), и у каждого из них есть свой собственный диск / устройство, эту концепцию миграции МОЖНО БЫТЬ УСКОРЕННО объединить в пару сегментов / фрагментов, которые нужно перенести, и заставить все это войти впараллельно.
Чего мы не знаем, так это Как это повлияет на сервер конфигурации .Существуют ли предположения о том, как работает сервер конфигурации, чтобы он сломался, если бы у нас было более двух одновременных перемещений?Похоже, пришло время посмотреть код сервера конфигурации.
Или один из нас мог бы спросить 10Gen, если бы вы / я / мы написали такое животное, было бы оно полезным или просто привело бы к боли и смерти, или, что еще хуже, было вынуждено жить вМиссисипи.