一个怪异的服务器问题
发表于 2006-08-21 02:42 PM 作者: Innocentius
最近帮一个朋友测试服务器,其中一个测试项目是每次传送数据后立刻断开连接。然而测试开始没几 分钟,客户端就报告了大量的错误,错误原因是 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
评论总数 0
评论
发表评论 |
作者为 Innocentius 的最新文章
- 在使用Passport认证的网站返回401错误代码 (2006-11-23)
- 一个怪异的服务器问题 (2006-08-21)
- C++ XML 序列化器 (2006-08-04)
- sscli 2.0 简介 (2006-05-10)
- PScript 脚本(进一步的特征) (2006-04-18)




