手游是当前游戏行业的主流品类,但是手游产品的运营过程还有很多问题需要厂商去解决,比如服务器性能的问题等,在《2017中国移动游戏质量白皮书》中不仅给出了目前国内手游产品遭遇的技术上的主要问题,也给出了一个推荐给开发者了解的解决方案,以下是针对各类技术问题WeTest给出的建议:
服务器性能问题解决建议
单场景问题排查
通过压测工具进行单场景测试,逐步增加场景压力,如果出现:服务器进程cpu资源耗尽、回复消息过慢、回复消息失败,则表示服务器到达瓶颈,此时一般可通过系统工具(top、perf、iostat、vmstat等)排查热点逻辑,查看是否存在优化空间,或从逻辑机制上解决。
容量测试问题排查
综合场景一般包括之前筛选出的所有场景,将所有玩家按照一定比例分布,该比例一般可以通过不同场景下的心跳包频率比例看出。
主要会遇到的问题为:游戏卡顿、玩家掉线等,该类问题一般为客户端或服务器各进程资源遇到瓶颈所致。排查方法与单场景类似。
稳定性测试问题排查
稳定性测试中易出现服务器宕机、内存泄露等情况,针对服务器宕机,一般通过gdb分析core文件,并结合所测场景的机器人行为进行分析宕机原因。通过查看稳定性测试中的内存变化曲线,可以判断服务器内存是否稳定或泄露,若发生泄露,一般可通过内存检测工具,如valgrind等对服务器进程进行排查。
手游安全问题解决建议
客户端安全
客户端安全指的是从反破解反调试角度,应用层面需要进行的防范措施。
针对开发者的建议:
1.增加反调试机制防止游戏在运行时被破解;
2.屏蔽常规的ptrace等注入方式;
3.配置编译选项将so文件中的函数名进行抹消;
4.针对动态库so以及资源文件进行完整性校验;
5.针对Unity引擎下的关键逻辑动态库dll文件,需要进行隐藏或者加密处理;
6.针对Apk文件的二次打包进行校验处理;
7.避免输出关键逻辑相关的log信息。
业务逻辑安全
业务逻辑安全指的是和游戏业务数据相关的安全问题。
针对开发者的建议:
1.针对游戏运行时的内存数据进行加密处理;
2.本地客户端与服务器端的通信协议必须使用加密保护,且加密Key至少每次登录变化一次;
3.针对通信协议强交互类型的游戏,关键逻辑运算必须有服务器端完成;
4.针对通信协议弱交互类型的游戏,需要记录用户在单局游戏内的数据,上报至服务器端进行统一校验。
服务器端安全
服务器端存在各种影响游戏正常运营的安全问题。
针对开发者的建议:
1.针对游戏内用户输入,需要防止SQL注入等类型的漏洞问题。
2.针对DDOS类型的攻击漏洞问题,建议加入类似大禹系统的防攻击安全组件。