node启动后就打开了对mongo的TCP连接,只要Node进程不结束,它就有始终有一个与mongo处于打开的连接,后续接收到客户端的所有CURD请求,是不是就始终都是走这一个一直处于打开状态的连接?有没有必要释放连接?
在node单线程异步事件模型中,数据库的连接池是否还有必要产生多个连接?node始终使用一个处于打开状态的对数据库的TCP连接,在高并发请求量下,这样是不是性能更好?
node启动后就打开了对mongo的TCP连接,只要Node进程不结束,它就有始终有一个与mongo处于打开的连接,后续接收到客户端的所有CURD请求,是不是就始终都是走这一个一直处于打开状态的连接?有没有必要释放连接?
在node单线程异步事件模型中,数据库的连接池是否还有必要产生多个连接?node始终使用一个处于打开状态的对数据库的TCP连接,在高并发请求量下,这样是不是性能更好?
5 回答4.8k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
2 回答1.7k 阅读✓ 已解决
5 回答1.8k 阅读
2 回答1.3k 阅读✓ 已解决
3 回答2k 阅读
1 回答3.2k 阅读
出于性能考虑,凡是应用到数据库(不光是指node或MongoDB)基本上都会保持一个连接池。你看到的应该就是这个连接池中的连接。至于是不是一直有一个,不一定,驱动会根据压力情况决定是否要增加或减少连接。你可以通过连接字符串中的
?minPoolSize=[值]&maxPoolSize=[值]
来控制最小和最大连接数量。即使在单线程情况下,也有可能出现多个连接,这点通常交给驱动去控制就好了,没有必要干预。