原博瑞游戏CTO 田博辉——MMO游戏服务器性能监控及优化分享
2020-02-27 851浏览
- 1.服务器监控及性能优化 田博辉 2016.8
- 2.目录 MMO游戏的常用架构 服务器系统及应用健康监控体系 游戏内常用的效率分析及对应的优化手段 与其他互联网产品的互通性思考 Q&A 环节
- 3.MMO游戏的常用架构 架构和业务是相互促进的
- 4.运营系统架构
- 5.游戏内监控体系 监控信息汇总到CMS 每个服务器定时汇报自身 各个指标信息 运营系统记录汇总绘图
- 6.服务器系统健康监控体系 硬件监控项 内网网卡使用率 CPU使用率 内存使用率 外网网卡使用率 硬盘使用率 磁盘IO
- 7.服务器系统健康监控体系
- 8.服务器系统健康监控体系 软件监控项 网络包 数目 线程 状态 帧速率 网络连 接数目 数据库 状态 在线玩 家数量 房间 数目 道具 数量 存档 状态 激活对 象数量 NPC 数量
- 9.服务器系统健康监控体系 硬件信息 软件信息 各种开源工具、内嵌API、心跳等多种检测方式 汇总 阀值判定 监控服务 各类报警 记录日志 健康监控体系报警,然后呢? ---分析
- 10.游戏内分析系统设计与实现 帧速率 网络包 数目 线程 状态 网络连 接数目 数据库 状态 监测和分析 是基于业务的 房间 数目 在线玩 家数量 存档 状态 数学 计算 激活对 象数量 NPC 数量 聚集 状态
- 11.游戏内分析系统设计与实现
- 12.游戏内分析系统设计与实现
- 13.MMO服务器常用的优化手段 写在之前 对于在运行系统,优化可能牵一发而动全身, 尽快利用各种手段解决问题,保证项目运行。
- 14.MMO服务器常用的优化手段 逻辑帧速率优化(尽量控制150ms) ----找到最耗时的函数,内嵌检测,运行超时LOG 对象数量过多,大量道具,NPC等 数学计算过多,位置计算,子弹碰撞,伤害计算等 异常聚集,不可控的玩家行为 跨线程访问,不合理的线程粒度 大量 • 分批计算 对象 • 设置激活 同步 • 同帧合并 • 减少聚集 锁操 • 减小粒度 作 • 减少锁时间 数据 结构
- 15.MMO服务器常用的优化手段 大量的网络包优化 ----找到发送最多的包,流量统计,LOG记录 同步的消息在同逻辑帧合并发送,减少投递次数 大量的网络IO重点优化包 MMO的大量包产生在同步,控制范围 使用内存池,大量小内存的申请释放消耗很大 异常来回发送等逻辑BUG 同帧 合并 重点 压缩 控制 同步 流畅
- 16.MMO服务器常用的优化手段 网络链接优化 创建链接开销大,使用网络连接池解决 开服、积分墙刷广告,从设计上支持动态增加网关服务器解决 撞库等异常的网络攻击,及时彻底释放,封IP解决 创建销毁 的开销 极限情况 的控制 安全处理 的手段
- 17.MMO服务器常用的优化手段 线程操作优化 ----尽量减少锁的时间 尽可能的少调用锁 减小锁粒度 线程数控制,线程间切换开销 利用析构自解锁,防止死锁 游戏服务器的线程处理 网络 数据库 存读档 内部LOG 系统 游戏场景 。。。 一次交换收到的 消息到处理线程 写比读要频繁 分成读写锁 一次交换到写线 程批次写入 不频繁操作, 注意锁定时间
- 18.MMO服务器常用的优化手段 存档数据库操作优化 ---尽量保证不回档 设计存读档缓冲,减少直接对数据操作 增加存档频率,设定重要存档节点 控制存档数据大小,可压缩 数据表设计合理 关键点 存档 压缩 数据 按战区分存档库 缓存 存档 存档 正确 合理 表结构
- 19.MMO服务器常用的优化手段 内存优化 单个对象的内存占用尽量少,比如使用标记位 频繁申请释放的对象使用对象池,消息,道具,子弹,NPC等 碎内存控制,长时间运行后会积累 重写new delete,用于统计和分析效率点和泄露 根据功能分多进程 控制申请 次数大小 使用 内存池 统计 内存使用
- 20.MMO服务器常用的优化手段 LOG系统优化 计算极限,各个相关设计写入读取频率和数量 大量LOG写入,分批次持续写入 LOG系统分级,控制写入阀值 统计系统同步,时间点选择 强大的LOG 系统是分析 问题的基础 决策
- 21.MMO服务器常用的优化手段 调用第三方API的优化 ---不是说第三方API不靠谱,只是考虑全面尽量少受影响 除非必要,否则不必须全信任并等待 开辟专门的线程或者服务等用于第三方API调用,并设置长度 第三方调用、超时、失败要统计 保证自身系统受第三方影响降到最低
- 22.MMO服务器常用的优化手段 和业务上配合的优化 在线、存留的要求前期的新手村多出生点 虚假繁荣点的设定 活动修改,错峰进行 方案配合 流程 优化
- 23.与其他互联网产品的互通性思考 高性能的设计是一种意识,而不单单是功能上的实现 架构上设计的高效和可扩展性是基础
- 24.与其他互联网产品的互通性思考 利用流程规避风险 细化设计文档,设定承载,内存,网络,IO,数据库操作频率等,帮助思考 过程监督,主要是数据结构上的选用是否合理,算法是否高效 定期利用工具诊断效率问题(Gprof Kprof gprof2dot.py等) 真实的外网测试环境,内外网络差异造成 架构细化 算法优化 真实测试
- 25.与其他互联网产品的互通性思考 服务器要有强大的LOG系统 可以实时设定等级LOG记录等级 分模块分功能的统计分析功能 峰值、均值、执行次数等统计 特殊性指定记录 ,某特定行为等 玩家 操作 系统信息 事件 统计 论系统LOG的重要性 逻辑 LOG 数据 流动
- 26.与其他互联网产品的互通性思考 灵活的可控制的开关系统和配置文件 随时指定某模块开放或关闭 随时控制物品的产生 随时控制任务ID的完成和接取 随时控制活动的开放和关闭 控制重新加载配置 多重开关和配置文件 会对产品的灵活控制 有很大的主动性
- 27.Q&A
- 28.THANK YOU E-mail :tianbohui@163.com