在 Ubuntu 14.04.1 LTS 上运行 MongoDB 2.4.11
在 top 中,这个 mongod 线程持续使用 ~195% 的 CPU:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24524 mongodb 20 0 4676092 767556 719184 S 194.9 37.4 221:15.16 mongod
当我跟踪 PID 时,我得到无尽的结果:
select(11, [9 10], NULL, NULL, {0, 10000}) = 0 (Timeout)
我认为这是 Mongo Timeout 的问题?但我不太确定,因为我对服务器问题解决还不熟悉。
MongoDB配置: http://pastebin.com/sheb1hTG
来自 Mongo 日志的尾部: http://pastebin.com/V5apSsq5
来自 mongostat 的示例: http://pastebin.com/VRQzqn3D
我有 7 个 Node.js 服务器连接到在这个 Ubuntu 上运行的 Mongo——我知道这太多了,但只有 2 个服务器导致 CPU 过载问题——当我将它们都关闭时,CPU% 恢复正常。
我不确定这些 Node 服务器是如何实现的,以及它是如何导致 Mongo 问题的。
答案1
我在使用提供的存储库将 MongoDB 全新安装到 RHEL 6.3 上时遇到了类似的问题
mongodb-org.x86_64 3.2.0-1.el6
安装后,服务启动时没有错误,但 CPU 超过 100%。我还注意到软中断非常高,上下文切换数以百万计。就我而言,虚拟机出了问题,重新启动后,问题解决了。上面的 strace 输出似乎对 MongoDB 来说是“正常的”——它使用了某种轮询?