windows 部署Mongodb时,报由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。 错误

最近一个项目使用Mongodb数据库,最初系统运行1天就崩溃了(白天每小时平均PV1000),无论是程序连接Mongodb还是MongoVUEl连接Mongodb都连接不上,报“由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。 127.0.0.1:27017.”错误。娘的啥原因?

通过度娘了解到,需要设置C#连接Mongodb的连接吃,修改原来默认的连接池大小。

设置代码如下:

public DB()
        {
            MongoClientSettings settings = MongoClientSettings.FromUrl(new MongoUrl(connectionString));
            settings.MinConnectionPoolSize = 10;
            settings.MaxConnectionPoolSize = 30;//设定最大连接池  
            //等待列队数量  
            settings.WaitQueueSize = 20;
            
            var client = new MongoClient(settings);
            var server = client.GetServer();
            Database = server.GetDatabase(dbName);
        }

 经过连接池设置后,系统运行7天内没有任何问题,但是7天后还是报同样的错误。娘的咋又出问题了 骂人

再次度娘无果快哭了,后来无意思索,觉得此错误应该是windows系统设置问题。调整度娘查询关键词。最终发现通过设置系统的windows TCP设置解决。

windows系统设置如下:

1. 打开注册表

2. 在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters下面可以增加一个MaxUserPort参数,设置MaxUserPort设置为65534(十进制)

3. 同样设置TcpTimedWaitDelay参数,其默认为120秒,修改为30秒,表示一个关闭后的端口等待30秒之后可以重新使用



到此设置完毕,系统运行30天没有崩溃,之前的错误也不再出现。大笑


补充:

之前配置MaxUserPort和TCPTimeWaitDelay之后系统运行1个多月,又出现同样错误,目前增加两项参数配置观察系统运行情况(目前运行),配置如下:



参考:

关于Windows频繁打开关闭端口时出现的问题

TCP - WAIT状态及其对繁忙的服务器的影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值