请教网游服务器的效率问题
我是第一次做服务器,效率老是很慢.反正就一个字'差';特来请求
大家,看有没有好的办法.
做了二个层次。学着csdn里的一篇文章做的,使用了一个RunGate,
一个GameServer.还有一个分配连接地址的服务器。来了客户端先去
连接分配地址的找到一个RunGate。RunGate与GameServer连接,RunGate
会将接收到的客户端的数据包加上一个标志,与数据包头之后发到
GameServer。
我测试的时候连接上1000个用户到RunGate,每个socket都是Sleep(300)之后
发送数据包。这时可以看到RunGate接收的数据已经完成。但是GameServer还
是在处理数据。要等到一段时间之后才能处理完.
框架是这样做的完成端口,在GameServer那里,先投递一个数据包头,得到一个
数据包头之后,就可以得到数据包体的长度,然后又去投递一个数据包体.完成
了读数据包体之后,把这个数据复制出来,放到我的一个队列中.然后用一个线
程池开始处理.之后又开始投递读数据包头.周而复始的做.
可以看得出来这个完成端口读数据的老是一个线程在做.感觉这样是不是对的.
我试过把处理数据包的函数也写在完成一个数据体完成之后调用的函数里.可能
还是太慢了.
可能是我对完成端口没有理解,不知道大家对于完成端口是如何来做的,如果提高
效率的.