Подтвердить что ты не робот

MongoDb - использование многопроцессорного сервера для приложения с большой нагрузкой

В настоящее время я оцениваю MongoDb для нашего тяжелого приложения для записи...

В настоящее время MongoDb использует один поток для операции записи, а также использует глобальную блокировку всякий раз, когда делает запись... Возможно ли использовать несколько процессоров на многопроцессорном сервере для повышения производительности записи? Каков ваш обход для глобальной блокировки записи?

4b9b3361

Ответ 1

Итак, сейчас простое решение - это осколочно.

Да, обычная окантовка выполняется на серверах. Тем не менее, его можно полностью очертить на одной коробке. Вы просто запускаете осколки на разных портах и ​​предоставляете им разные папки. Вот примерная конфигурация из 2 осколков на одной коробке.

Команда MongoDB признает, что это своего рода sub-par, и я знаю, что разговариваю с ними, что они ищут лучшие способы сделать это.

Очевидно, как только вы получите несколько осколков на одном поле и увеличите свои потоки записи, вам придется быть осторожным с диском IO. По моему опыту, я смог насытить диски одним потоком записи. Если ваши вставки/обновления относительно просты, вы можете обнаружить, что дополнительные потоки записи ничего не делают. (Map-Reduces - исключение здесь, осколок определенно помогает там)

Ответ 2

Нет, по-прежнему рекомендуется использовать осколки для использования нескольких ядер процессора. Как указано в FAQ

Sharding улучшает concurrency путем распределения коллекций по нескольким экземплярам mongod, позволяя серверам осколков (т.е. mongos process) выполнять любое количество операций одновременно с различными последующими экземплярами mongod.

Каждый экземпляр mongod не зависит от других в кластере осколков и использует блокировку чтения-записи MongoDB). Операции на одном экземпляре mongod не блокируют операции над любыми другими.

Остановка на одном ящике имеет свои проблемы, поскольку один пользователь, указанный в списке рассылки mongodb-user

После некоторых значительных экспериментов я обнаружил одного демона MongoDB shard. НЕ МОЖЕТ использовать более одного процессора. На 24-процессорном ящике производительность масштабируется до тех пор, пока мы не нажмем около 8 осколков, а затем еще один предел.