难题!(50分)

  • 主题发起人 主题发起人 kevincsg
  • 开始时间 开始时间
Variant does not reference an automation object
出错是因为把Variant类型变量赋予普通变量
 
to Fenix
我已经设置threadcachesize为6000了,是不是太大了?是不是会存在问题?
 
问题还没有解决吗?
仔细检查一下你的客户端程序和服务器程序,和传输、处理数据有关的都看一看,确定
是不是有别的原因。
实在不行就把程序贴上来看一看。
 
首先先谢谢大家,由于某些原因,只有下星期再调试了,一有情况我会马上告知大家。
我会再多多加分的!!!
 
各位今天有了新的进展,我把serversocket的threadcachesize从6000改为100后运行,机器
到11台后不报错了,于是我信心大增,又加了几台,加到16可又报了,后来经过测试,为15
台,我想马上就要解决了,但不知为什么改了一下threadcachesize有这么大的不同。请高手
指点迷津.
 
占用服务器缓存资源的问题,
不防设到80应该可以上到16台的,你的cpu是不是celeon的,换了吧
 
兄弟,我把threadcachesize改为60也不能上16台.
 
兄弟,你按照我说的方法去做,看有效吗:
把threadcachesize的数值改为终端数*7+1,如16台终端,threadcachesize的值
为16*7+1=112+1=113;
试一下,如果正确,就再改为终端数*7-5试一试。


 
Fenix兄:
我不太明白你的意思,为什么要终端数*7+1,而且如果正确再终端数*7-5,能告知为什么吗?
急!!!
 
解决这种问题的根本是Server端不要使用Delphi的Socket构件
你直接使用WinSock2.2API写伯克利服务器端就可以,
服务端中自己维护线程(当然你也可以用阻塞方式--但不提倡,对于还要写数据库
阻塞也无访)的创建和杀死(如果想要提升效率,你还可以使用线程池)
这样如果你写得好的话 单台PC的并发客户端数量可以达到 2000
如果使用Delphi ServerSocket 能过30我就佩服你了 :)
 
那个公式只是一个想法而已,不过你最好试一试,并告诉我答案。
Tintin的话也很有道理,不过你可以轻而易举的让他佩服你(达到30的方法太多了)。
看一看《Unix网络编程---卷一》,然后用winsock.pas中的API尝试bind,listen和connect,
就可以以Tintin的方法来实现你的要求。



 
我在socket方面的编程不太熟悉,不过我想kevincsg的程序应该是一个典型的多层数据库应用程序,
是否可以试试MIDAS组件呢?比如使用DCOM连接。
 
Tintin,Fenix:
你们有winsockAPI的资料吗?如果有的话,请给我一份,谢谢!
kevin-csg@china.com 
这真得比较急,我已经打算在socket这一级重写.
还有Fenix,那个结果我还没试过,如一有结果,我会马上通知你的!
 
To kevincsg:
发给你了 注意查收
 
Tintin:
先谢谢了,我怎么没收到,麻烦你再发一份吧。
 到gl-csg@china.com这个邮箱吧!
 谢谢了!
 
都是高手!学习学习!
 
去书店买一本"Unix网络编程"卷一,98元.stevens写的.看一天就行了,刚好够编这个程序.
 
Fenix
你这个方法我已经试过了,行不通,10台就报,后来我又把threadcachesize改为30,能上17台了.
由于时间关系,我没有继续测试。我想,问题应该能够解决了吧,但我还是没搞清楚,你讲的这个想法??
能告诉我为什么吗?
 
谢谢大家,问题解决了!给分了!
 
多人接受答案了。
 
后退
顶部