日期:2014-05-17  浏览次数:21092 次

TCP通信中线程数不断增加的问题
本帖最后由 jiangting1986 于 2014-01-16 21:08:54 编辑
最近一直被这个问题纠结着,好难过啊,实在找不到了,求助各位大神。
具体的情况是这样的:现在有一个中心服务器,用来接收外面的设备通过网络上传的数据,然后进行处理,外面有20个设备,每个设备都有一张手机卡,发送信息到服务器上,正常的时候应该是建立20个TCP连接,线程数应该也不会比20个多太多的。但是现在遇到了问题,软件运行了一段时间之后,从任务管理器中查看,该软件的进程中竟然包含了1000个左右的线程,然后及时TCP连接还在,却再也无法处理连接发送过来的数据了,设备逐个处于掉线状态,这太不正常了,通过netstat查看TCP连接数,保持为20个,这到底是什么问题导致线程数不断增加的呢,有没有人碰到过,求分析,下面给出代码。

 /// <summary>
        /// 开始侦听,这个方法是启动侦听的方法
        /// </summary>
        void StartListen()
        {
            try
            {

                log.InfoFormat("运行接收服务。");

                var ServiceName = "PSPIPDRSCWinService";

                myListenerAndExcutor = MonitorServerCommand.GetInstance();
                ServiceName = System.Configuration.ConfigurationManager.AppSettings["ServiceName"];

                myListenerAndExcutor.allDone = allDone;
                myListenerAndExcutor.Port = System.Configuration.ConfigurationManager.AppSettings["ServicePort"].ConvertStrToInt(7100);
                ;


                if (myListenerAndExcutor == null)
                {
                    myListenerAndExcutor = MonitorServerCommand.GetInstance();

                }

                myListenerThread = new Thread(new ThreadStart(myListenerAndExcutor.ListenClientConnect));
                myListenerThread.Name = "PSPITcpLienster";
                
                //开始监听
                myListenerThread.Start();
            }
            catch (Exception ex)
            {

                log.FatalFormat("运行接收服务时错:{0}——{1}", ex.InnerException == null ? ex.Message : (ex.InnerException.Message ?? ex.Message), DateTime.Now);
 &n