问题:从项目上线之后,客户说一个月就会宕机一次,系统用户无法正常登陆,后台报异常,无法连接,而整个集团的并发数并没有到一个很大的数量级,每次宕机,单纯的重启web服务器以及数据库服务无法到达解决问题的办法,必须要重启电脑,因此思路就转向了承载web服务器本身的服务器2003,每次都是按照socket来进行数据的读取,而每Socket.close()是不马上释放连接的,而是设置为time_wait状态,这个时间默认是240S,这个就是有点太长,可以设定为最小值,30s,而设定最小值之前必须要进行下面解决方式的第一步,而后进行第二步30s的设置,下面解决socket的问题,下面把解决方式贴出来。
解决方式:
第一步:启动注册表编辑器 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
第二步:新建 值名称:MaxUserPort
值类型: DWORD
值数据: 65534(用十进制的方法写进去就可以)
有效范围: 5000 - 65534 (十进制)
默认: 0x1388 5000 (十进制)
第三步:新建 值名称:TCPTimedWaitDelay
值类型: DWORD
值数据: 0000001e(也就是30,这个表示TIME_WAIT的秒数)
重启电脑,问题解决
本文详细介绍了如何解决Web服务器在高并发环境下,由于Socket连接长时间处于TIME_WAIT状态导致的服务不稳定问题,通过调整注册表参数和优化Socket设置,实现服务的稳定运行。
2万+

被折叠的 条评论
为什么被折叠?



