高手救我吧,为了这个莫明其妙的问题,我从广东跑来福建客户这里,昨晚一晚没睡,但还是没搞定~(100分)

S

shaoyy

Unregistered / Unconfirmed
GUEST, unregistred user!
我公司在福建这里做了一个超市的客户,我们的前台收银系统是我写的,本来以前有大量客户,是很稳定的,后来改成了三层,用socket连接,试用了两个客户,好像都没有问题,但现在这个客户这里出现这样的问题:开始用得好好的,但只要连续频繁使用几分钟就客户端就会没有响应,网络的效率很好的,没出问题前很快,一下子就不动了,我调试了一下,发现是通过中间层从服务器查询一条商品资料时程序没响应了,而且一开始是没事的,多查几次,几分钟或半个小时后就没响应了,请问各位,有什么情况会如此?很奇怪的是,我在本地测试的两个客户没有反映有这个问题,客户的超市明天就开张了,搞不定就惨了,高手给点建议吧!
 
当一个机器没响应时,对其它机器没有影响,应该不是服务器负载的问题~
 
是资源没有释放吗?是不是用了多线程?定时器不断的想取得数据而又得不到数据?
 
打印用了多线程,但禁止打印一样如此啊,我用手提连服服务器跟踪调试,发现频繁调用一个中间层函数、频繁打开中间层一个查询都会出这样的错~~
 
你的模块是什么线程的。
是维护有状态的还是无状态的
 
HAPPY_ALEX: 我做中间层时都没选择,用delphi默认的
 
操作系统或数据库有问题吧
 
我也不懂,帮你提前!
 
這種問題其實是越簡單越好﹐你看一下小聰的pos,vfp開發的﹐易維護﹐界面清淅﹗
買給別人的軟件在口里吹是用線程﹐三層等﹐但你可以搞個假三層。
小聰的pos可支持高達25個收銀台﹐用了多年﹐沒有問題。客戶反映良好﹗
 
哎,现在也后悔了,其实不用改三层的,原来的好好的,白添麻烦~
 
我个人认为是你程序的什么地方资源没有释放。。
 
如果是多次进行同一个操作就出现这种问题,建议你仔细检查一下资源的释放问题吧,不管性能多好的机器,总是频繁的申请也总有耗尽的时候
对三层服务我不太懂,给个建议而已,顺便帮你提前,大家都是打工的不容易
 
1 出现僵尸线程了
2 死锁了
3 资源用完没释放
 
真的很谢谢各位!说明一点:我的程序就是简单地重复调用中间层过程,打开查旬,没什么很耗源的操作,但收银程序的使用频率确实很高,情况紧急,我作了最后的准备,如果下午再搞不定,我只有给客户安装最老版本收银程序以应付一下了
 
给你提给醒,每操作一次查看机器的内存。
 
“僵尸线程”是什么意思?恐怖! :~(
 
同意xfecczgh
 
那个什么三层我不懂,我只知道,多线程,很多资源需要互斥访问的。
 
只是这样简单的描述,很难(几乎不可能)找到原因。你用的什么数据库,建议你
(1)跟踪数据库查询
(2)前台、中间层都直接F9运行,看看能否出现什么系统异常,如果有,就比较好解决了
(3)查看在过程中,特别是失败后,几个系统消耗增援的情况,比如Socket资源(netstat),Cpu,内存,有无无响应的进程等。
我猜测,是否是socket资源没有即时释放,超过资源限制;超时太短;可能阻塞 、非阻塞 的设置也回有影响;再或者,数据库有锁定...
 
有没有用到共享属性管理器来管理不能客户端的访问,你的中间层过程有没有调用其它PAS上的的函数或过程?SQL语句有没有问题?
 
顶部