读书人

服务器出现socket耗尽如何解决

发布时间: 2012-11-01 11:11:33 作者: rapoo

服务器出现socket耗尽怎么解决
服务器用在xp系统 用 IO复用 select模式

作压力测试(1千到2钱连接通信)的时候出现 WSAENOTSOCK错误(socket 耗尽);

有没有好的方法解决socket耗尽问题呢?

谢谢!


[解决办法]
为什么socket会用完呢
[解决办法]
1. 避免socket泄露
2. 建立socket pool, 按需管理,控制未关闭的socket数目
3. 在生成环境中真的耗尽了socket,是很悲剧的,因为你将无法通过网络重启服务器,只能到机房强制重启。

[解决办法]

探讨

为什么socket会用完呢

[解决办法]
探讨

引用:

为什么socket会用完呢


socket也是资源,可能会耗尽的

[解决办法]
长时间不用的连接就closesocket掉

[解决办法]
只开不关?
[解决办法]
改成IOCP模型可以解决这个问题。
[解决办法]
用线程池来实现。。不用的就关闭!
[解决办法]
WINDOWS使用IOCP
[解决办法]
select的个数比较小的,window下用IOCP,linux下用epoll
[解决办法]
长时间不用的连接就closesocket掉

[解决办法]
换端口,负载均衡
[解决办法]
1000个连接,还不停的发数据,大概还不停的新建连接,断开连接(不然socket应该不会耗尽)
你机器能处理的过来么?几个16核的cpu啊?
压力也不是随便乱加的。。。。。。
[解决办法]
对windows不了解,系统应该是有地方设置最大同时打开连接数的,如果已经设置最大,那么就应当检查你的程序是否回收了关闭的连接,netstat看看是否有很多CLOSE_WAIT。
[解决办法]
探讨

可以99.9999%的把握说,楼主的代码又问题:)

[解决办法]
在日志中记录对每个socket的创建、打开、关闭、销毁操作。
[解决办法]
++
探讨

在日志中记录对每个socket的创建、打开、关闭、销毁操作。

[解决办法]
还可以弄几个计数的变量,统计一下打开了多少socket,关闭了多少
探讨

在日志中记录对每个socket的创建、打开、关闭、销毁操作。

读书人网 >C++

热点推荐