mongodb 警告:您正在 NUMA 计算机上运行

Ale*_*ago 5 mongodb 16.04

我有一台运行 Ubuntu 16.04 LTS 的专用服务器。我的 mongoDB 服务有问题。当我进入 shell 时,我收到以下消息:

WARNING: You are running on a NUMA machine.
We suggest launching mongod like this to avoid performance problems:
numactl --interleave=all mongod [other options]
Run Code Online (Sandbox Code Playgroud)

我该如何解决?我已经尝试过类似的解决方案:How should I start MongoDB on a NUMA machine? 和: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

小智 3

正如 Jacek 所建议的 - 如果使用 mongodb 专用服务器,则在 BIOS 中禁用 NUMA 是一个不错的选择。对于生产场景,建议使用numactl命令来确保 NUMA 意识面向未来。

\n\n

要使 mongod 开始使用交错模式,请numactl \xe2\x80\x93interleave=all在常规模式之前添加mongod命令之前添加:

\n\n
numactl --interleave=all mongod < mongod options>\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果使用 numaclt 方法,还可以通过添加以下内容来禁用 vm zone reclaim zone_reclaim_mode 为 0 ,vm.zone_reclaim_mode = 0保存/etc/sysctl.conf并执行sysctl -p以将新设置加载到内核中。

\n\n

欲了解更多见解 - https://engineering.linkedin.com/performance/optimizing-linux-memory-management-low-latency-high-throughput-databases

\n


小智 1

您可以按照您为该过程复制/粘贴的消息中所述禁用 NUMA。您还可以在 grub 中在系统范围内禁用它,为内核设置 numa=off 。另一种选择是在 BIOS 中禁用它 - 可能取决于您使用的硬件(例如,对于 Dell,它将“Node Interleaving”设置为“Enable”)如果您有 Mongo 专用的数据库服务器,这将是一个很好的解决方案。

您可以稍后使用“numactl -H”命令进行验证 - 您应该只看到一个节点。

一般来说 - 您也可以 - 根据您的具体情况,如果您的 mongo 实例不太大,请忽略该消息。这可能不是一个真正的严重问题,但 Mongo 在启动过程中会警告您有关您的设置,这可能会导致问题。是的 - 在生产系统上,有大量数据、大内存分配 - 您可能会遇到性能问题,甚至内存分配失败。