Я установил 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/