У меня есть выделенный сервер под управлением Ubuntu 16.04 LTS. У меня есть проблема с mongoDB сервисом. Когда я вхожу в оболочку, я получаю это сообщение:
WARNING: You are running on a NUMA machine.
We suggest launching mongod like this to avoid performance problems:
numactl --interleave=all mongod [other options]
Как я могу решить его? Я уже попробовал решение как: Как я должен запустить MongoDB на машине NUMA? и: http://greproot.com/warning-you-are-running-on-a-numa-machine-we-suggest-launching-mongod-like-this-to-avoid-performance-problems-numactl-interleaveall-mongod-other-options/, но ничто... не извините за плохой английский язык :D
Можно отключить NUMA, как упомянуто в сообщении, которое Вы копируете/вставляете для процесса. Можно также отключить его в масштабе всей системы в личинке, установив numa=off для ядра. Другая опция отключает, она в BIOS - может зависеть от аппаратных средств, которые Вы используете (для Dell, например, это была бы установка "Node Interleaving" для "Разрешения"), Который будет хорошим решением, если у Вас будет выделенный сервер базы данных за монго.
можно проверить его позже использующий "numactl-H" команда - необходимо видеть только один представленный узел.
Обычно - Вы можете также - в зависимости от Вашей точной ситуации, просто игнорировать сообщение, если Ваш экземпляр монго не является слишком большим. Это не может быть действительно критическая проблема, но монго во время запуска предупреждает Вас о Ваших настройках, которые могут вызвать проблемы. Да - в производственной системе, с большим количеством данных, больших выделений памяти - можно пострадать от проблем производительности или даже иметь сбои выделения памяти.
Как предложил Jacek - При использовании выделенного сервера для mongodb отключение NUMA в BIOS является хорошим вариантом. Для производственных сценариев было предложено использовать команда numactl для соответствования требованиям завтрашнего дня для осведомленности NUMA.
, Чтобы заставить mongod начать использовать чередованный режим, добавьте numactl –interleave=all
перед Вашим постоянным клиентом mongod
команда:
numactl --interleave=all mongod < mongod options>
При использовании numaclt метода, также отключите vm зону, исправляют zone_reclaim_mode к 0 путем добавления: vm.zone_reclaim_mode = 0
к /etc/sysctl.conf
, сохраните его и выполнитесь sysctl -p
для загрузки новых настроек в ядро.
Для большего понимания - https://engineering.linkedin.com/performance/optimizing-linux-memory-management-low-latency-high-throughput-databases