返回   cpper编程论坛 > Blog > Innocentius
注册账号 论坛帮助 会员列表 日历事件 搜索 今日新帖 标记版面已读

为这篇文章评分

一个怪异的服务器问题

发表于 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 Email文章
评论总数 0

评论

发表评论 发表评论
作者为 Innocentius 的最新文章

所有时间均为格林尼治时间 +9。现在的时间是 12:01 PM


Powered by vBulletin® 版本 3.7.0
版权所有 ©2000 - 2008,Jelsoft Enterprises Ltd.
(C) Copy Right All Right Reserved 2001 - 2007

Search Engine Friendly URLs by vBSEO 3.1.0