我有一个包含3个mongo节点、1个主节点、1个辅助节点和1个仲裁器的副本集。
在这个副本集上连接,我有20个节点进程,在20个不同的服务器上使用自己的连接到副本集。所有这些进程都使用mongoose。
我的主复制集显示以下内容:
rsProd:PRIMARY> db.serverStatus().connections
{ "current" : 284, "available" : 50916, "totalCreated" : NumberLong(42655) }有时,当我重启一些nodejs节点时,我会出现以下错误:
mongodb no valid seed servers in list我到复制集的连接字符串如下:
"mongodb://mongo2aws.abcdef:27017/dbname,mongo1.abcdef:27017/dbname"我的db选项如下:
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会抛出这个错误?我可以做些什么来防止这个/增加限制?
提前感谢,致以最诚挚的问候。
发布于 2018-03-02 23:22:31
已通过增加ulimit open files解决
在AWS EC2 ubuntu服务器中打开文件的默认ulimit默认设置为1000。
此外,添加重新连接选项可防止此问题:
config.db_options.reconnectTries=10;
config.db_options.reconnectInterval=500;
config.db_options.poolSize=20;
config.db_options.connectTimeoutMS=5000;https://stackoverflow.com/questions/48950227
复制相似问题