Mongodb - 副本集 - 最大连接数

问题描述 投票:0回答:1

我有3个mongo节点的复制集,1个主节点,1个辅助节点和1个仲裁节点。

连接到这个replicaset,我有20个节点进程,在20个不同的服务器上使用他们自己的连接到replicaset。所有这些过程都使用猫鼬。

我的主要复制品显示如下:

rsProd:PRIMARY> db.serverStatus().connections
{ "current" : 284, "available" : 50916, "totalCreated" : NumberLong(42655) }

有时,当我重新启动某个nodejs节点时,我有以下错误:

mongodb no valid seed servers in list

我与replicaset的连接字符串如下:

"mongodb://mongo2aws.abcdef:27017/dbname,mongo1.abcdef:27017/dbname"

我的数据库选项如下:

       config.db_options = {
            user:           "MYUSER",
            pass:           "MYPASSWORD",
            replset: {
                rs_name:    "RSNAME",
                ssl:        true,
                sslValidate:false,
                sslCA:      ca,
                ca:         ca,
                sslKey:     key,
                sslCert:    key
            },
            socketOptions : {
                keepAlive :         1,
                connectTimeoutMS :  1000
            },
            server: {
                ssl:        true,
                sslValidate:false,
                sslCA:      ca,
                ca:         ca,
                sslKey:     key,
                sslCert:    key
            },
            auth: {
                authdb: 'MYAUTHDB'
            }
        };

当我只运行16个节点进程时,我没有这个错误。根据这个,我想我已达到最大并发连接的限制或类似的东西。

但是,如果我再次重启崩溃节点,它似乎终于工作了。

为什么mongo / mongoose会引发这个错误?我该怎么做才能防止这个/增加限制?

在此先感谢最好的问候。

node.js mongodb mongoose replicaset
1个回答
0
投票

通过增加ulimit打开文件来解决

默认情况下,AWS EC2 ubuntu服务器中打开文件的默认ulimit设置为1000。

© www.soinside.com 2019 - 2024. All rights reserved.