在此之前我要修正一些之前的错误认知,我一开始以为冒险岛私服的网络部分是基于Netty的。
后来找到源码的依赖和关键位置一看,他是Apache基金会负责维护的MINA 1.x 版本。
后来查了一下,这套系统已经非常老旧且过时。
经过后来验证,确实证实我之前的猜想有一个失误的地方。
之前我认为是数据库的瓶颈导致游戏卡顿和掉线。于是我将项目向SpringBoot+Mybatis的框架进行转化。但是后来经过验证,MINA才是整个游戏运行的瓶颈。
因为在吸怪测试中,涉及到了服务端的大量广播,包括怪物位置移动,群体技能发动击中怪物,伤害等广播内容,让游戏的数据吞吐量一下子提升几个档次。导致MINA无法应付,同时产生较多内存垃圾,触发GC回收机制,另外JAVA触发STW导致所有线程又被暂停。故而客户端世界崩溃掉线。
所以项目的优化我从优先SpringBoot+Mybatis替换,调整到了将MINA替换成现在较为主流的Netty。并且记录替换过程中遇到的相关问题。
目前已经完成相关替换工作并上线吸怪测试,经过实际验证,Netty的吞吐量和内存管理机制配合G1GC可以完全应付整张地图的吸怪测试。先上效果视频。
评论(已关闭)
评论已关闭