800分求解决:SocketConnection做的三层频繁断线,为什么? ( 积分: 300 )

  • 主题发起人 主题发起人 次时代
  • 开始时间 开始时间

次时代

Unregistered / Unconfirmed
GUEST, unregistred user!
最近做了一个三层系统,用SocketConnection进行连接,应用服务器是以前开发好的了,已经通过压力测试,在连接200个用户的情况下(每个用户每隔6秒读取100条记录)CPU占用率小于5%.系统开发也很正常,进行过6-8个用户的应用测试,但在给用户正式使用时却发现SocketConnection连接频繁断线,最短的时间有一分钟内重连数次(程序中有断线自动重连功能).已经好几天没有解决这个问题了,请大家分析一下SocketConnection频繁断线的原因,网络是没有任何问题的,因为老的三层软件运行的很正常.我想知道双CPU,双网卡或双IP对应用服务器有影响吗?客户端即使用XP也有使用WIN98的,会不会也产生影响?今天下午我将应用服务器装到一台超线程单网卡的机器上,问题也还没有解决.这300分为大家讨论的分,能帮且解决问题的另开贴送500分.
 
建议使用完成端口来处理多socket连接方式
 
楼上的要么是高手,还么是菜鸟。
 
而且还是越高手那种
 
我最近也做了个 socket 三层的, 没有发现断线的情况,我还没有做“心跳”之类的。
你说的一分钟内也会断线几次,我就有点奇怪了。看一个 scktsrvr.exe 的 timeout 是不是为 0 ? 0 表示无限大。就是不超时。
 
看看socket的补丁说明
对双cpu的支持是有问题的
 
将 midas.dll 和 socketsvr.exe 都换成最新的版本.
 
我对应用服务器进行压力测试所有的机器就是双CPU的,没有发现问题,socketsvr.exe我用的是版本是:7.0.4.453(就是打过补丁的那个),Midas.dll版本是:7.1.1692.666.timeout设置时间是5分钟,客户程序中心跳信号间隔是1分钟.我说一分钟内断多次是指当打开一个窗口时,程序要向服务器取多个数据,每次取数据时都发生连接断开的情况,程序检测到异常断开后又会自动重新连接,所以就有"一分钟内重连数次"的说法.
 
为什么不用ASTA或者RO呢?
 
像你所说的情况,如果网络、机器、配置都没有问题,应该考虑程序异常或处理逻辑错误的情况,而不应该将问题重点放在socketconnect的连接问题上。
 
应用服务器经过测试,应该不会有问题,客户程序也并不是都出错误,有时一上午也不出,有时就连续的出.错误提示是:
Project spxs.exe raised exception class Exception with message 'Access violation at address 0048B7AA in module 'scktsrvr.exe'. Read of address 00000000'. Process stopped. Use Step or Run to continue.
这时程序能成功的自动重新连接,但一取数据就马上出错.这时会在scktsrvr.exe的users页里留下好多死连接,只能等到超时后让scktsrvr.exe强行断开.
 
应该是出错时内存回收有问题.
重连接时内存问题没有解决, 所以还是出错.除非重启服务.
检查一下内存有可能造成泄漏方面的代码吧
 
3868474:你是说要检查客户程序还是应用服务器程序或者是scktsrvr.exe?
 
应该是应用服务器了
 
3868474:应用服务器两年前就做出来了,在其它用户那里运行没有问题啊.应用服务器我做的是通用的.
 
scktsrvr.exe也应该不是. 否则其他地方也有问题.
也许这里发生了其他地方没有碰到的事情.
客户端并发时的冲突? 加强人员仔细测试一下吧, 程序中加入一些测试用代码, 看看出错时的状态和位置吧.
 
我的估计呢.可能是. socket 可能会根据不同的midas 版本来选择一种协议进行通讯
如果客户端存在不同版本的 midas 有可能就出现这种情况.一个有用就没事.两个人一上来就死了.
 
从地址值来看0048B7AA是应用程序有bug。
查一下at address 0048B7AA 处的语句
用windasm32等
 
他出错是在 in module 'scktsrvr.exe'
 
应该不是'scktsrvr.exe'的问题,用的人这么多,有问题大家可能都发现了.
 
后退
顶部