.................................. (1分)

B

bluely

Unregistered / Unconfirmed
GUEST, unregistred user!
..................
 
我抢第一个........位置。
 
偶第二个,听课ing......
 
你的测试结果和MS的测试结果差不太多...
TServerSocket的非组塞模式确实不太好,2000个用户是上限了
 
^_^,我也来学习学习,
 
这个结果一点也不意外呀!
 
学习一下, 楼主能帮我看看我的客户端测试程序吗
看看哪里错了

服务器端收不到消息

http://www.delphibbs.com/delphibbs/dispq.asp?lid=1987054
 
to bluely
首先我要说 TServerSocket 的在应付大用户并发和大数据请求方面的架构写的不是很好,同样 Indy和 ICS 也是如此,这是我一直以来说的观点。
第二即使使用阻塞模式的长连接,那服务器最多也可以负载 2010-2014 个客户并发长连接(MS 网络编程一书的测试程序的写法是有问题的其只能响应1008个连接),应为一个进程最多只能创建 2016 个线程,这是进程内核堆栈大小的限制,TServerSocket 的 AcceptThread 和 ClientThread 的机制写的并不好,没有做Sleep 处理以及其它处理模式的不合理,这也是它不能负载到两千个用户和 CPU 占用率特别高的原因。
第三像你《《写一个多线程的客户端程序,每个线程开启后连接到服务器后,并以200ms的速度向服务器发送一个26字节的封包,服务器收到封包后,在封包前面加上"已经处理."字样后,返回给客户端.客户端收到后显示出来》》这种测试方法,服务器它的负荷根本就是会非常小的,所以还是服务器的 Accept 调度算法有问题,其实你只要尝试创建多个线程,而在线程处理中不作类似 Sleep 的处理,你可以马上看到这个程序一下子就会占用 CPU 的全部使用率。
第四像在完成端口中如果你还使用啦 WaitFor.... 这些内核对象的化,那么你的系统性能还是会大大降低,用户态和内核态的转换是要花费大量 CPU 执行周期的。
最后说,要实现一个高性能的服务器系统,首先要把有限的阻塞线程最大化来响应并发请求,其二要千万处理好 Accept 线程和 接收客户端请求的 Client (Peer) 线程的调度,否则系统都不用处理客户端的请求,就已经占用啦全部的 CPU 资源,其三,要尽可能的让系统调度只在用户态下运行,这是保障系统高薪能必要条件。最后还有使用设定缓存和超时处理等等。


 
俺也写了测试,晕,真是失败,客户端弄了200个线程连接后,Server开始只是7-15%的CPU,过了10秒后就变成30%, 50%, 70%, 90%,再过10几秒后,又变回7%-8%,晕,都不知怎么回事。
楼主的会不会?完成端口来的。
而且最要命的是,客户端一断开,Server就异常退出,5555
 
copypaste, 把你的客户端程序发给我一份好吗 我也在学习这方面的东西
szjack@21cn.com
 
楼主好厉害啊
 
发了

楼主能不能发一份代码给俺,让俺也学习学习
copy_paste@163.com
 
to:copypaste
收到你的源码了 偶研究一下 谢谢!
大家共同进步吧 如果能得到楼主的测试源码就好啦,可惜楼主不愿意公开
 
...................
 
to:bluely
我想问两个问题:
1、在完成端口中,如果收发数据之后要通过Ado操作数据库,那同步问题是否是指线程与
线程之间?我的意思是:如果只开一个工作线程,是不是就不存在同步的问题了?
2、曾经听你说过这种情况下,应该一个线程用一个Adoconnection,如果我连接sqlserver
的话,是否存在这两个问题:(1)线程多了sql连接也多了,是否需要Ms增加授权?
(2)各个线程所使用的Adoconnection虽然连接一个sqlserver的一个Database,但由于
不是一个连接,是否还需要同步?如果需要,对不同的组件怎样同步?

我记得你写过一个游戏服务器的,先谢谢了
 
to:bluely:
你的服务器代码是用Delphi写的吗?
奇怪的是,我用VC写完成端口可以正常使用,但在Delphi中就不行了,具体请帮我看看:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1989146
 
张无忌、bluely、陈一绞:
三位:你们可算是此类专家了,发个完成端口在Delphi中实现的代码给我,好吗?
最简单的即可,能正常使用的就行!
mailto:lectureke@163.com
 
....................
 
...........................
 
顶部