请教高手,1个COM+三层分布式系统,客户端有线程时,当超过一定量的客户端时,服务器就经常会出现CPU 100% 的情况. (100分)

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

sunys

Unregistered / Unconfirmed
GUEST, unregistred user!
经检查,只要把线程拿掉,就不会出现CPU%100的情况,
但是线程却必须要用到,该如何处理?
我的线程是2分钟执行1次。
 
不知道你的事务是怎么用的,如果事务太多可能会有很大的消耗
 
基本上很少用到事务。线程用到1个。
 
不要把全部的業務規則全放在中間層.否則會死得很難看的(不過服務器配置高除外).呵呵.
 
注意COM+的大小,不要将一个COM+包含所有的东西。
 
建立對象池,不然CUP的時間就是花在了建立對象和釋放對象上了。
你那個線程做了什麼動作?
 
线程就是查询数据库。
线程每2分钟执行一次。
CoInitialize(Nil);
try
QueryBookData;//这句话是查询数据库
finally
CoUninitialize;
end;
 
查询数据量大的时候有可能会造成100%吧. sleep 一下
 
不对,还是你服务端组件的问题
否则,如果上万用户访问,系统不就瘫了!
可以考虑组件缓冲池模式!
 
服务端太累了,当用户达到一定数量时,肯定会影响效率的。
建议重新设计,不要采用定时查询。
 
服务端太累了,你的线程要优化。
 
可以通过SQL的事务的触发来做嘛!那就不用查询了
 
后退
顶部