Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Meteor:多个不需要的mongodb连接使db部署饱和_Node.js_Mongodb_Meteor - Fatal编程技术网

Node.js Meteor:多个不需要的mongodb连接使db部署饱和

Node.js Meteor:多个不需要的mongodb连接使db部署饱和,node.js,mongodb,meteor,Node.js,Mongodb,Meteor,我维护了一些部署在AWS elastic beanstalk(64位Amazon Linux/4.5.2)上的meteor 1.7.0.3应用程序。全部连接到托管mongodb部署(在Compose上,mongodb版本3.2.18)。最近,mongodb部署指标变得疯狂。部署中充斥着数以千计的连接和更多的传入请求。当连接数达到5000时,部署的路由器内存不足,连接被拒绝 不用说,这会导致应用程序无响应/无法使用 有趣的要点/细节: 它发生在多个meteor应用程序上,所有应用程序都有不同的代码

我维护了一些部署在AWS elastic beanstalk(64位Amazon Linux/4.5.2)上的meteor 1.7.0.3应用程序。全部连接到托管mongodb部署(在Compose上,mongodb版本3.2.18)。最近,mongodb部署指标变得疯狂。部署中充斥着数以千计的连接和更多的传入请求。当连接数达到5000时,部署的路由器内存不足,连接被拒绝

不用说,这会导致应用程序无响应/无法使用

有趣的要点/细节:

  • 它发生在多个meteor应用程序上,所有应用程序都有不同的代码基础 几乎没有共同的代码。通用代码是 声明代码的集合,例如:

    const Accounts=new Mongo.Collection('account')

  • 通过ssh进入ec2,可以看到节点服务器 到数据库的多个连接:

    sudo lsof-p$(ps awx | grep node | grep main.js | cut-f2-d“”)| egrep'TCP | UDP'

  • 结果:

    node    3749 nodejs 1486u  IPv4 237550      0t0    TCP ip-172-31-60-74.ec2.internal:48210->ec2-54-174-178-28.compute-1.amazonaws.com:17847 (ESTABLISHED)
    node    3749 nodejs 1487u  IPv4 237694      0t0    TCP ip-172-31-60-74.ec2.internal:48306->ec2-54-174-178-28.compute-1.amazonaws.com:17847 (ESTABLISHED)
    node    3749 nodejs 1488u  IPv4 237854      0t0    TCP ip-172-31-60-74.ec2.internal:38462->ec2-54-84-155-20.compute-1.amazonaws.com:17847 (ESTABLISHED)
    node    3749 nodejs 1489u  IPv4 238043      0t0    TCP ip-172-31-60-74.ec2.internal:48506->ec2-54-174-178-28.compute-1.amazonaws.com:17847 (ESTABLISHED)
    ...
    
    总共有数千行。上限似乎是5000左右。在这个数量下,连接将被mongodb部署拒绝

  • 不断创建新连接导致node.js进程cpu高于正常值,并且内存占用量不断增加

  • 如果节点重新启动,则连接数将回到少数,并且可以在那里停留数小时

  • 不确定这是如何触发的,但在某个时刻,其中一台服务器开始创建新的连接,所有的麻烦都爆发了

  • meteor服务器日志为空。没有任何迹象表明存在问题

  • 当有问题的meteor应用程序重新启动时,mongodb部署指标显示开放连接和路由器内存负载显著下降

  • 问题是,我可以检查什么? 有什么建议吗?最好使用什么工具/技术进行调查? (也许会有用?)

    或者更好,也许是其他人碰到了这个问题,并有了解决办法

    8月30日更新:

    rcvd来自Compose的注释:

    对于某些用户,连接计数问题似乎是由 已安装的节点本机驱动程序中存在错误 使用
    v3.1.3
    发布(仅发布了约2周)


    有人能告诉我如何更新Meteor项目以使用更新版本的mongodb驱动程序吗?

    这与此相同吗:?是的,似乎完全相同。谢谢你指出!根据我的经验/观点,Meteor是为MVP而存在的,一旦你开始扩展,你就想离开mongoDB,进入类似amazon DynamoDB和Meteor的领域,只需使用带有培训轮的节点即可。