为啥我的三层服务器!到一个客户端在执行一个大的数据查询时!其它客户端就好像阻塞掉了!一定要等前一个查询完成后才能继续其它数据返回!(100分)

  • 主题发起人 主题发起人 chinanbzxx
  • 开始时间 开始时间
C

chinanbzxx

Unregistered / Unconfirmed
GUEST, unregistred user!
中间层为啥不是线程的!
 
你 中间层的远程数据模块(RDM)创建的时候,选择的是什么线程模式?
 
中间层可以用多线程单元--Apartment。
 
Multi Instance
Apartment
 
会不会是服务器和数据库这个环节?服务器中TSession用了没有?
 
to yanghaijun 我用了Multi Instance Apartment好像没有啥作用
to xiaasp TSession我也用了 我郁闷死了
 
能不能具体点?
例如你服务端用什么组件返回数据集的?用的是什么数据库?查询量到底有多大?等等
 
跟返回数据包的大小有没有关系?
 
多启几个服务也是一个解决办法
 
to xiaasp
Multi Instance Apartment模型书里说的是多实例的线程模型!实际上
好像是多实例,一个APARTMENT,多个客户端创建多个线程,但线程还是排队执行的
 
多进程处理不对,到www.astatech.com下载它的server代码,
看看它的多进程是如何处理的。
 
zhtx 兄弟你有源码给我看看!!:))
 
chinanbzxx说的没错,其实默认的Multi Instance Apartment这个模型在李维的那本书里面说的很清楚,就是当客户端有几个线程时,服务端只会有一个远程数据模块的一个COM线程去处理来自一个客户端的所有线程,结果使得客户端的多线程很没有意义
我刚才又去看看了那本书,其实我们最需要的是他6-20的模型,很可惜李维没有讲如何去实现.......
我也是听说ASTA处理的比较好,不过没完全看过,还是进去找找吧
 
xiaasp, 你是咋搞的,大家交流交流!!!EMAIL:nbzxx@cnnb.net
有没有中间层源码!!!
 
楼主,不要急,RemoteDataModule是多线程的
记住Multi Instance,Apartment然后机器重启,没问题的,
不过用BDE的话,有一些设置,我不太懂,我用ADO没问题
 
我不是说了吗,到www.astatech.com去下载它的server源码。
 
to zhtx 我不知道下那个!兄弟!你有的话给我发一个!NBZXX@CNNB.NET
 
TO shiningplus,兄弟我用的是BDE还有救吗???
 
首先,你在Delphi中菜单的Run下
Unregister Active Server,把服务器从注册表中清除
然后确准
RemoteDatamodule的Pas文件的最后的代码是
initialization
TComponentFactory.Create(ComServer, TXXX,
Class_XXX, ciMultiInstance, tmApartment);//XXX是Remoterdatamodule的名字
end.
注意 ciMultiInstance, tmApartment没有错
编译一遍
重启一下机器
最后
在Delphi中菜单的Run下
Register Active Server
 
to shiningplus, 靠!大哥!我原来就是ciMultiInstance, tmApartment的,他本身是多线程的!但是问题是
这样作的话实际的线程还是排队执行的!也就造成了客户之间查询相互是要影响的!所以就没有啥意义了,
我不知道你到底懂不懂意思。我对你这样做有怀疑!!!我用的IDE不是ADO ,ADo本身就是异步的!
 
后退
顶部