在server(系统是win2k adv server)上运行程序A连接大约200个网络设备,设备全部是socket server,程序A其中100个使用长连接,另外100连上处理完了就断开(设备不一样),这200个socket通讯非常频繁,运行一两天后系统出现网络资源耗竭,任何程序都无法再创建socket套接字。必须关掉程序甚至重新启动系统。我使用netstat -na显示只有几个项目是time_wait,其他大部分都是ESTABLISHED我有修改注册表中 TcpTimedWaitDelay值为30,请问这种情况怎么解决方法,有没有手动初始化网络连接的功能(停用/启用网卡是否有效),另外windows 2003 server是否比2000 server的网络处理性能要强谢谢了

解决方案 »

  1.   

    呵呵,设备已经定下来了不提供udp,谢谢回复!
      

  2.   

    检查短连接的处理,是否没有释放socket
      

  3.   

    问题应该出在短连接上注意调试,跟踪内存看简单的close不一定会释放socket。
      

  4.   

    是这样的,程序连接两种设备一个是知道通讯协议的(我们使用长连接),另外一个是fanuc的CNC机台,他们不提供通讯协议,有一个DLL档,开始我在线程中使用长连接(dll功能)调用DLL中功能,但是使用一段时间后会出现内存泄露,最后没办法将dll放在我新建的一个小程序(Console AP调用DLL,就是包了一层),然后在原来的线程中调用我新建的小程序(CreateProcess),判断小程序的返回值,同时也关闭了小程序,自然也释放了DLL,这样解决了内存问题,不知道这样不停的CreateProcess,是否会耗竭系统资源呢?
      

  5.   

    短连接每8秒一次,每天20小时不间断,这部分功能是调用别人的DLL,所以代码也没有,现在就是从操作系统上有没有解决方法