服务器出现socket耗尽怎么解决
服务器用在xp系统 用 IO复用 select模式
作压力测试(1千到2钱连接通信)的时候出现 WSAENOTSOCK错误(socket 耗尽);
有没有好的方法解决socket耗尽问题呢?
谢谢!
[解决办法]
为什么socket会用完呢
[解决办法]
1. 避免socket泄露
2. 建立socket pool, 按需管理,控制未关闭的socket数目
3. 在生成环境中真的耗尽了socket,是很悲剧的,因为你将无法通过网络重启服务器,只能到机房强制重启。
[解决办法]
[解决办法]
[解决办法]
长时间不用的连接就closesocket掉
[解决办法]
只开不关?
[解决办法]
改成IOCP模型可以解决这个问题。
[解决办法]
用线程池来实现。。不用的就关闭!
[解决办法]
WINDOWS使用IOCP
[解决办法]
select的个数比较小的,window下用IOCP,linux下用epoll
[解决办法]
长时间不用的连接就closesocket掉
[解决办法]
换端口,负载均衡
[解决办法]
1000个连接,还不停的发数据,大概还不停的新建连接,断开连接(不然socket应该不会耗尽)
你机器能处理的过来么?几个16核的cpu啊?
压力也不是随便乱加的。。。。。。
[解决办法]
对windows不了解,系统应该是有地方设置最大同时打开连接数的,如果已经设置最大,那么就应当检查你的程序是否回收了关闭的连接,netstat看看是否有很多CLOSE_WAIT。
[解决办法]
[解决办法]
在日志中记录对每个socket的创建、打开、关闭、销毁操作。
[解决办法]
++
[解决办法]
还可以弄几个计数的变量,统计一下打开了多少socket,关闭了多少