我们有测试服务器,上面运行着3个不同的node.js应用程序。每个应用程序使用相同的MongoDB数据库测试实例,该实例也在同一服务器上运行。因此,在任何给定的时刻,我们与mongodb服务器最多有3个不同的开放连接。
问题是在每次代码部署之后(基本上是:杀死当前正在运行的进程,代码更新并启动新进程)我在服务器上看到新进程(单个进程的线程),在htop中显示为{{1 }}。因此,偶尔我们必须重新启动测试服务器,因为有太多未使用的线程,这使得mongod进程占用了所有RAM。
我不确定为什么会发生这种情况并寻找解决方案来解决这个问题。
我的假设是,如果我们简单地杀死node.js proccess连接(因此与此连接相关的线程)以某种方式保持活着,因此我们应该通过关闭数据库连接来优雅地关闭它而不是杀死nodejs进程
答案 0 :(得分:3)
htop也显示不同的线程,你的mongod没有多次启动,这对于相同的配置是不可能的,因为端口已经在使用。
使用top或ps aux | grep mongod你应该只看到一个过程。
你也可以配置htop不显示那些,按F2>显示选项>隐藏用户态线程。