You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

22 lines
1.0 KiB

服务器性能随着在线玩家数量的增加而降低,有几个方面
1.在线玩家数量变多,和玩家通信的消息变多,消息接收发送和处理需要时间,消息new delete会引发gc
2.在线玩家数量变多,内存中的对象数量变多,gc的时候遍历时间加长(c#的gc会stop the world)
3.在线玩家数量变多,tick的逻辑线性增加
优化1
针对1的优化就是减少消息量,这里最明显也是比较容易改的就是聊天服务器独立出来,世界聊天是广播的,数量很大(数量占所有发送数据的29%)
优化2
a.想办法减少对象数量,某些class可以用struct代替
b.world服务器现在player对象申请后是不删除的,修改这个,下线一定时间后删除(为了兼容比赛,时间可以长一点,比如2小时)
优化3
进程拆分,比如world服务器的打地鼠和跑马独立一个进程处理
优化4
多进程部署,game服务器可以修改成多game支持,这个容易,因为game的逻辑大部分都是基于单玩家的,没有互相之间的关系
优化5
好友服务器特殊说明一下,好友由于大量的数据在内存cache,对象多,gc的时候慢,一个也是减少对象的生命周期,不需要了及时删除
第二,思路也是多进程支持,由于玩家的数据会在玩家的好友那边
存在,所以需要按uid分配到不同的进程,分配的进程负责玩家的写操作,其他进程可以对这个玩家进行读操作