Erlang单服游戏开发记录2


经过一段时间开发,大部分功能已经完成,开始了性能测试以及调优,遇到一些性能热点:

1、主游戏服务由于每个玩家是单独的状态线程,表现良好,但其中的一个玩家数据管理服务(主要提供查找以及广播)出现了调用超时。

2、大厅的数据管理服务(主要提供查找以及动态创建、销毁)出现了调用超时。

3、数据服务出现了调用超时。

以上测试均在开启了5000个玩家机器人,每秒并发200-300时进行。而超时错误一般都是由于处理速度远低于消息队列形成,而增大超时设置(默认是5秒)是极不推荐的做法,应该从根源上进行分析:

1、经过性能分析检查,发现在世界聊天广播时消耗的时间过大, 最大值达到了7秒,而正常测试时,给5000人发一个1024的消息,消耗的时间也不足1ms,这个时间是怎么上升的呢?根据上面的提示,在高并发下,消息队列的形成时间远小于广播的时间,造成广播处理的耗时不断的变大,从不足1ms,上升到143ms,再上升到2059ms,不到10秒钟,接下来的调用请求全部都超时了。

2、有了前面的经验,对大厅的性能热点原因分析,也很顺利,只是进一步发现了,在高并发下,虽然需要处理的人数下降了很多(一个大厅100人),但就是这100人的广播,也遇到同样的几何级数增长,导致调用超时。

3、 数据服务的调用超时就比较有趣,原因在于日志关闭得不够彻底,提供到error级别后,性能上升,但在数据库中的角色帐号达到20000条后,同样出现了调用超时。

优质内容筛选与推荐>>
1、JMeter学习-1 概述
2、[Qt-creator] CMake + Multiple Build configuration
3、嵌入式开发之davinci---dm8168VPORT口管脚总结
4、关于No Dialect mapping for JDBC type :-9 hibernate执行原生sql语句问题
5、charles 高级批量请求


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号