windows 部署Mongodb时,报由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。 错误
2014-05-14 13:31
1681 查看
最近一个项目使用Mongodb数据库,最初系统运行1天就崩溃了(白天每小时平均PV1000),无论是程序连接Mongodb还是MongoVUEl连接Mongodb都连接不上,报“由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。 127.0.0.1:27017.”错误。娘的啥原因?
通过度娘了解到,需要设置C#连接Mongodb的连接吃,修改原来默认的连接池大小。
设置代码如下:
经过连接池设置后,系统运行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状态及其对繁忙的服务器的影响
通过度娘了解到,需要设置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状态及其对繁忙的服务器的影响
相关文章推荐
- 代码访问 SQL Server数据库时的错误: 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
- 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
- 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作--解决方法
- WCF NetTcpBinding 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
- 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作(MaxUserPort,TcpTimedWaitDelay)
- 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作的解决方法
- 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
- windos 下 IIS报错: 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作的解决方法
- socket connect error :0x00002747,由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
- 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作。
- WCF NetTcpBinding 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
- 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作的解决方法
- 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
- SQL Server 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
- 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作--解决方法(CSDN手动迁移)
- 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
- 由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作的解决方法
- 疑难杂症--由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
- .NET异常 由于系统缓冲区空间不足或列队已满,不能执行套接字上的操作。
- no buffer space available、由于系统缓冲空间不足或队列已满,不能执行套接字上的操作