node.js - node连接mongodb的一些思考

查看:123
本文介绍了node.js - node连接mongodb的一些思考的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

最近在公司项目的时候发现它们用了Generic Pool 去管理mongo的连接池,但是我发现感觉用的很诡异,mongostat显示,在打开后,要么维持在最大连接数, 要么最小连接数,不会有任何变化。

node连接mongodb 真的需要连接池么?我在百度和谷歌都看了一圈,发现很多结论,并且发现这个数据库连接池的库,被关注的并不高。说明使用的人应该不会太多。

我就想请教下,这个node到底怎么连接mongodb 最科学,给点思路或者哪里能学习就行。谢谢各位大大。!~

解决方案

无论是node-native-driver还是mongoose都自带了连接池,没有必要,也不应该再额外配置一个连接池来使用,会产生一些奇怪的效果,你看到的最大连接数可能就是其中之一。
连接池的相关配置全都在连接字符串里,具体参考一下官方文档有很明白的说明:Connection Pool Options
关于连接池的大小,取决于驱动。比如Java/C#的默认值是1~100,NodeJS这样异步非阻塞的语言是1~5。根据应用的情况,你可能会占用更多或者更少的连接都有可能。道理很简单,比如:

  1. 你的查询非常简单,每秒能执行1000次;

  2. 或者你的查询非常复杂,每秒只能执行1次;

对比起来,前者所需的连接数就要少得多。驱动会根据需要在不超过最大值的情况下调整池内连接数的多少,所以从默认值开始是一个好的开端,通常默认的池大小也够用。不过还是要仔细观察自己的压力状况来做适当的调整。
一个误区是给很大的maxPoolSize,想怎么都够用对不对?实际上服务器所能承受的压力并不是多给连接就可以扩展的,所以建立了超过服务器承受能力连接数不但没有帮助,反而会拖垮服务器。实际上maxPoolSize也正是在压力超过服务器承受能力的时候的一种保护措施。
综上,需要多少连接是由你的查询现状决定的,我没有办法在这里给出一个理想值。观察你的应用,寻找合适的值,但是量力而为。

这篇关于node.js - node连接mongodb的一些思考的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆