一个怪异的服务器问题

最近帮一个朋友测试服务器,其中一个测试项目是每次传送数据后立刻断开连接。然而测试开始没几 分钟,客户端就报告了大量的错误,错误原因是 only one usage of each socket address (protocol/network address/port) is normally permitted”. 用 netstat 查看客户端的连接情况,发现有大量的状态为 TIME_WAIT 的连接存在。Google 以后确定 原因在于 TCP 会在关闭 Socket 之后继续占用端口一段时间,在这段时间内,如果要创建新的连接, Socket 会分配一个新端口给它。 这取决于两个注册表值,都是位于这个键下: HKLM/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters TcpTimedWaitDelay 表示关闭 Socket 后占用端口的秒数,默认是240 MaxUserPort 表示最大的可用端口,默认是 5000 如果发送请求的速度是 300/秒,那么5000个端口(实际上还要扣掉1024个保留端口)只能用14秒左右 ,从第15秒开始就没有可用端口,因此 WinSock 就要报错了。 推荐的修改值为 TcpTimedWaitDelay = 30 MaxUserPort = 65534

 转:http://www.cpper.com/site/comments/tcp_time_delay/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章