您的位置:首页 > 数据库 > Mongodb

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

2014-05-14 13:31 1681 查看
最近一个项目使用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状态及其对繁忙的服务器的影响
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐