Назад | Перейти на главную страницу

Настройка MongoDB на машине NUMA

Я установил MongoDB 3.6 на свой компьютер с centos 7, и в журнале запуска я вижу предупреждение, потому что я использую оборудование NUMA:

2018-02-05T00:13:23.889+0100 I CONTROL  [initandlisten] ** WARNING: You are running on a NUMA machine.
2018-02-05T00:13:23.889+0100 I CONTROL  [initandlisten] **          We suggest launching mongod like this to avoid performance problems:
2018-02-05T00:13:23.889+0100 I CONTROL  [initandlisten] **              numactl --interleave=all mongod [other options]

Интересно, как я могу навсегда исправить этот запуск numactl, если я не хочу запускать mongod каждый раз вручную. Я обычно бегаю sudo service mongod start и я хочу, чтобы эта команда запускала MongoDB каждый раз с префиксом numctl.

Как я могу добиться этого с помощью CentOS7? (Я погуглил и не нашел никаких служебных файлов, которые можно было бы редактировать на моем сервере).

На моем с использованием CentOS 7.6 находится на

/etc/systemd/system/multi-user.target.wants/mongod.service

Предыдущий вопрос "служба с numactl" Как запустить службу с numactl оказывается о mongodb. Для CentOS 7 актуален пример systemd, а именно:

Редактирование /etc/systemd/service/mongod.service.d/numactl.conf чтобы переопределить exec: ExecStart=/usr/bin/numactl --interleave=all -- /usr/local/bin/mongod $OPTIONS run

Другой вариант дизайна - разделить ваш хост NUMA на виртуальные машины размером не более одного узла каждая. Mongo имеет возможность кластеризации, хотя это будет сложнее, чем масштабирование. Хотя масштабировать не очень сложно. И если большинство виртуальных машин работают с одного хоста, может возникнуть единственная точка отказа.

В первую очередь убедитесь, что numa установлена ​​и загружена во время запуска:

yum search numa | egrep -v devel
# Be sure to install the necessary package, avoid the "devel" ones
yum install numad # numactl

Убедитесь, что numad загружен при запуске:

systemctl enable numad
service numad start
service numad status
echo 0 | sudo tee /proc/sys/vm/zone_reclaim_mode
sudo sysctl -w vm.zone_reclaim_mode=0
cat /var/log/numa*

Теперь, когда среда готова:

numactl --interleave=all <path> <options>

Это путь к программе, которую вы запускаете, и любые необязательные аргументы, которые необходимо передать программе.

Посмотрите здесь для получения дополнительных разъяснений:

https://docs.mongodb.com/manual/administration/production-notes/