3

我们有运行 3 个不同 node.js 应用程序的测试服务器。每个应用程序都使用相同的 MongoDB 数据库测试实例,该测试实例也在同一台服务器上运行。因此,在任何给定的时刻,我们最多有 3 个不同的开放连接到 mongodb 服务器。

问题是,在每次代码部署(基本上是:杀死当前正在运行的进程、代码更新和启动新进程)之后,我在服务器上看到了新进程(单个进程的线程),它在 htop 中显示为/usr/bin/mongod --config /etc/mongodb.conf. 因此,有时我们必须重新启动测试服务器,因为这样的未使用线程太多了,这使得 mongod 进程占用了所有 RAM。

我不确定为什么会发生这种情况并正在寻找解决此问题的解决方案。

我的假设是,如果我们简单地终止 node.js 进程,则连接(以及因此与此连接相关的线程)以某种方式保持活动状态,因此我们应该通过关闭数据库连接优雅地关闭它,而不是终止 nodejs 进程。

4

1 回答 1

8

htop 还显示了不同的线程,您的 mongod 没有多次启动,这对于相同的配置是不可能的,因为该端口已经在使用中。

使用 top 或 ps aux | grep mongod 你应该只看到一个进程。

您还可以将 htop 配置为不显示这些,按 F2 > 显示选项 > 隐藏用户态线程。

于 2013-04-17T14:37:51.880 回答