游戏切场景socket缓冲区溢出的问题
-
线上socket缓冲区满,导致宕机
上周收到了线上某个服的宕机邮件,于是上去瞅了一眼,发现线上某个服在玩家集中切场景的时候,应用层设置的缓冲区爆掉了。

-
切场景的设计
游戏在设计之初,玩家身上的数据不是很多,在切场景的时候,玩家身上的数据都是转发过去的 不会从数据库里面再读取,随着游戏逻辑的扩张,玩家身上的数据,越来越大,切场景带来的消耗也越来越大,应用层设置的缓冲区大小如下:

因为我们这个场景是多人赛马的一个场景,每个赛马场景最大的赛马人数是12个(配置控制),于是把每个赛马房间且场景的间隔设置长一点,每个场景赛马人数减少一点,应该就可以了
-
切场景的时候,普遍的做法?
现在主流的切场景做法是怎样的呢?
1、每次重新读数据库,只带少量玩家数据过去?
2、对玩家数据做压缩处理,以时间换空间?
3、进副本时只带少数信息过去,副本的结算逻辑,等到玩家出来副本后,再结算,更新相关的逻辑
4、使用redis、memcache等内存数据库,加快读取信息的速度,减少时间延迟