为什么C/S会如此频繁的掉线.三层会不会呢.(200分)

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

sunfuhong

Unregistered / Unconfirmed
GUEST, unregistred user!
我们的系统是用DELPHI+SQL2000完成的.用ADO连接.(C/S型的)
服务器端是用CISCO的路由器.IBM的服务器(只是PIII800的,可以支持4个CPU,现在只装了一个CPU.)
客户端通过ISDN和MODEM播服务器的电话号码而完成连接.
现在的问题很大.MODEM的经常播不上.就算拨上了,也不会超过20分钟就死机或者掉线.[:(!]
ISDN的就会好一点.但是,也不会超过30分钟.死机,掉线.
客户端大概有15个.少人用的时候可能会好一点(这个是有点主观的,因为我只是在猜某个时候人多人少.).
现在紧急万分.哦.还有的就是.数据库的数据量有的表是几千条,最多的是25万条.
如果把它换成三层的话会不会好一点呢.如果是三层的用SOCKET还是DCOM呢.请各位爷们指教指教.
真诚求教问题的原因所在.如果有需要我可以把服务器端的网络结构图贴上来.请各位帮个忙.谢谢!
 
路由器设置有没有问题.
 
TO ADANG:
路由器是中国电讯的人来搞的,应该没有问题.(纯属猜)
 
你有没有试试看在局域网里测试一段时间会不会有同样的现象?
我估计是由于你c/s结构客户端程序跟db server交互时数据量很大,造成modem线路通讯
不畅,然后很自然的就死机了。
你如果换成三层的话在设计的时候一定要注意client和app server之间通讯的数据量要
减到最小的程度,因为你的通讯线路实在是太差
 
to 叶孤城:
在公司开发的时候是一点事情都没有.
我们公司的就是很简单的域服务器.
但是我不明白.最多下的数据也只是:2000条左右.为什么差别这么大.
有什么好的方法先让我避开这个问题.我会尽快改成三层的方式.如果改成三层需要多添一台服务器吗?
 
既然你已经开发好了,估计要做大的改动也不可能了,但是提醒你注意
千万不要做类似select * from table的操作,至少加上set row count 100
client和db的通讯数据量无法控制,把modem拨号搞死是很正常的

如果你要改成三层也不用多加服务器,app server可以在db server上面跑,
如果以后你用户多了,可以单独分出来
 
没有这方面的经验,听听.
 
我是否应该把他改变成三层呢?
我的时间只有14天了.到时间,中央监事会就下来检查.
SQL太多,不能一个一个的改呀.我真的不知道会有如此大的区别(广跟局).
网络上面的配置有没有什么方法可以改进网络传输的效率的.
谢谢指教了.请帮忙.
 
还有.我怀疑是不是服务器太差了.加一个CPU会不会有改进.但是我知道的事情是,加CPU只是对多进程会有帮助.
对于多线程的东西是没有什么帮助的.
万望指教.
 
如客户端都装上WIN2000会不会好一点呢.
 
还有一个问题就是怎么减轻服务器的负担.把负担尽量的拿到客户端来.
 
我只能说,你选择这样一个方案来跑c/s是非常失败的
我以前做过三层的程序,也是通过modem拨号的,通讯质量的确非常不稳定
我的数据都是自定义的格式,然后压缩打包以后用socket发走
两边都是socket的操作,就是这样还经常发生一些异常的情况

你现在的情况我觉得可以这样,到boss来视察的时候,你把数据库处理一下
把数据比较多的地方先删掉一些,这样也许可以蒙混过关
另外可以把几个比较容易造成死机的地方先set row count 一下试试看
祝你好运
 
谢谢指教了.
我想知道的是,如果按照正常的说来,这一个系统应该是怎么样去规划.
上面的问题还有一个就是,当某个时候提交数据还会出现连接失败的情况.这种情况只有重新启动
才有用了.
恳请个位告诉在下应该怎么样的去规划这一个系统.应该用哪一种模式.还有什么中间层的可以或者应该用上吗?
我打算重新写这个系统.因为我们的BOSS是比较固执的.他用的方式就是一打开某个模块就先显示几百条数据,然后再在上面
进行操作.例如添加,删除等.这样子做会有问题吗?强烈请教.谢各位!
 
你们boss使用的方法是没有问题的,关键看你怎么实现
你不能一下子就把几百上千的数据传到client里面去显示一个dbgrid
你应该每次只显示20条记录,给他一个上下翻页的功能,这样他就不会抱怨了
boss不在意你的程序是怎样去去数据的,你应该把通讯量减到最小

你这系统应该用三层来做,但是这样你的代码量会增加一些
你这个系统的重点在于通讯而不在于业务,你一定要选择一个比较好的通讯构件来做
不然你会很惨。

提交数据失败的问题我没有碰到你这种情况,不知道你的提交是全部用stored procedure
来呢,还是全部在client里面,如果全部在client里面,那就是说你的程序操作数据库
还有一些问题。
 
可以说,这是个极为失败的设计,
比较快的修改办法
1、使用存储过程,可以大大减少通讯量
2、改三层,时间不宽裕
以上两条都要改程序,很麻烦,还有第3条
3、如果是别人设计的,告诉你的老板这是因为期初设计的问题
如果是你设计的,在他扁你以前赶紧走人,因为迟早被揭露
 
to 叶孤城:
我的意思认为他那样子做的话没次都拉那么多的数据.而且.每个表最少都有十几个字段.
那我应该用什么通讯构件呢?请介绍!
谢谢.我刚刚看了一下,有什么ASTA,MIDWARE等,是不是说这些呀.
请指教!
 
分不够可以加到够为止,请各位指教.
 
顶部