我有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会引发此错误? 我该怎么做才能防止这种/增加限制?
提前致谢 最好的问候。
答案 0 :(得分:0)
通过增加ulimit打开文件来解决
默认情况下,AWS EC2 ubuntu服务器中打开文件的默认ulimit设置为1000。