Я исследую некоторые проблемы с производительностью в моей настройке mongo. У меня есть 3 контроллера запросов и 6 шардов. Я выполняю большой пакетный импорт / обновление, и на трех контроллерах запросов я получаю около 200 запросов в секунду. Однако, исследуя осколки, я вижу множество ошибок, например 50 в секунду. Когда я запускаю серверы сегментов сверху, я вижу, что они используют только около 8% памяти. Для меня это означает, что mongo не настроен на серверах сегментов для использования всей доступной памяти. Я ошибся? Спасибо за любой совет.
У меня есть 3 контроллера запросов и 6 шардов.
Я полагаю, вы имеете в виду три mongos
машинки, АКА "роутеры"? Я никогда не слышал термин «контроллер запросов» применительно к MongoDB. Это достаточно нестандартно, чтобы усложнить вопрос.
Я выполняю большой пакетный импорт / обновление, и на трех контроллерах запросов я получаю около 200 запросов в секунду.
Итак, примерно 600 запросов в секунду попадают в вашу сегментированную среду.
Однако, исследуя осколки, я вижу множество ошибок, например 50 в секунду. Когда я запускаю серверы сегментов сверху, я вижу, что они используют только около 8% памяти. Для меня это означает, что mongo не настроен на серверах сегментов для использования всей доступной памяти. Я ошибся? Спасибо за любой совет.
Я предполагаю, что вы используете top
на ОС хоста, а не mongotop
против работающего члена шарда. Я понимаю, что вы захотите изучить природу отображения памяти MongoDB. Это огромная тема, и ее стоит прочитать на выходных, но вот заметки Клиффа:
mongostat
. Ошибка в mongostat
не означает серьезных неисправностей на диске, это означает неисправности вне рабочего набора, которые mongod
процесс используется. Тем не менее, он все еще может воздействовать на файлы в ОЗУ и работать практически так же быстро, как если бы память действительно принадлежала mongod
.mongostat
сбои, программные сбои ОС или жесткие сбои ОС.mongod
органически загружать рабочий набор в течение срока службы обычной загрузки запроса приложения. Однако для этого очень мало причин, за исключением быстрого нагрева памяти на новом первичном узле после понижения или быстрого нагрева памяти для нового. mongod
PID (может быть, в результате перезагрузки, например).Для меня вы не описали ничего необычного для MongoDB, если бы это было что-нибудь, кроме серьезных ошибок. В mongod
сам по себе может содержать очень мало оперативной памяти, связанной с тем, что доступно на хосте, но кеш ОС будет заполнен файлами с отображением памяти, на которые ссылается MongoDB. Один из недавних экземпляров MongoDB, который я устранял, имел 144 ГБ ОЗУ и mongod
использовала менее 10%, и все же ОС Linux на хосте имела более ста ГБ ОЗУ, указанную как кэшированную память, и не было никаких сбоев диска. Т.е. MongoDB был доволен.
Если бы в ОС произошел серьезный сбой, и используется свопинг ОС ... это было бы странно и проблема настройки уровня ОС.