今天下午刚从客户坐车回来,晚上洗完澡,闷热的天气让人睡不着觉,就和大家分享一下windows2003 server socket端口的默认5000的数量修改方式。
导致问题:从项目上线之后,客户说一个月就会宕机一次,系统用户无法正常登陆,后台报异常,无法连接,而整个集团的并发数并没有到一个很大的数量级,每次宕机,单纯的重启web服务器以及数据库服务无法到达解决问题的办法,必须要重启电脑,因此思路就转向了承载web服务器本身的服务器2003,每次都是按照socket来进行数据的读取,而每Socket.close()是不马上释放连接的,而是设置为time_wait状态,这个时间默认是240S,这个就是有点太长,可以设定为最小值,30s,而设定最小值之前必须要进行下面解决方式的第一步,而后进行第二步30s的设置,下面解决socket的问题,下面把解决方式贴出来。
解决方式:
第一步:启动注册表编辑器HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
第二步:新建
值名称:MaxUserPort
值类型: DWORD
值数据: 65534(用十进制的方法写进去就可以)
有效范围: 5000 - 65534 (十进制)
默认: 0x1388 5000 (十进制)
第三步:新建
值名称:TCPTimedWaitDelay
值类型: DWORD
值数据: 0000001e(也就是30,这个表示TIME_WAIT的秒数)
重启电脑,问题解决