有关socket连接释放的问题,请高手帮忙分析! ( 积分: 100 )

  • 主题发起人 主题发起人 secondmonk
  • 开始时间 开始时间
S

secondmonk

Unregistered / Unconfirmed
GUEST, unregistred user!
问题:一个GPRS接收端程序,目前有50台终端机,每隔30秒通过UDP协议向服务器发送定位信息,每隔5分钟通过TCP协议向服务器发起新的连接,接收端程序的处理如下:
1、解析接收到的定位信息,存入本地数据库;
2、本地数据库通过后台的一个作业每隔5分钟把本地库中的定位信息同步到数据库服务器;
3、将定位信息转发给所有连接上的监控客户端(如果有客户端的监控程序连上服务器的话,判断客户端的连接使用UDP);
4、收到终端的tcp连接后,记录连接的socket,发送对应的确认信息,并关闭和释放原来的连接(终端每次发起的连接都是新的连接);
现在出现的问题是,接收服务器运行一段时间后(大概10天),内存会逐步消耗完毕而当机,请大家帮忙分析一下,内存的消耗主要在什么地方?我觉得最大可能是socket连接的释放问题,请问socket连接要怎么释放?是否直接close和free就可以了?
 
时间 进程对cpu占用 进程对内存的占用 系统cpu使用 系统内存提交更改
2007-09-03 cpu 55(50-60) 8352k cpu 57% 512M / 2390M
2007-09-06 cpu 54(50-60) 5640k cpu 55% 1086M / 2390M
2007-09-07 cpu 45(41-56) 3996k cpu 57% 1238M / 2390M
这份测试数据表明,系统内存提交更改基本一天会增加100多M,差不多10多天,两G多的内存就消耗光了
 
看你这样的系统内存增加,肯定是资源的释放问题(比如你接收发送时的Stream等等)
 
接受答案了.
 
后退
顶部