服务器性能优化
在一些高QPS的场景下,服务器可能面临的挑战和问题总结。
- 服务器一定要有流控功能和降级预案,一些接口可以提供有损服务,最差情况只要保证核心业务不出问题。
- 梳理出各个关键接口在不可用时的表现,和处理方案,已经可能面临的问题,落实到文档,一步步攻坚。
- 核心业务和接口预估最高QPS,根据QPS指标做好全链路压测。
- 做好性能监控和报警,实时查看大盘数据。
- 最常出现性能瓶颈的地方:
- 登录,特别是注册新用户。流控限制服务的承载上限,一定不能超过当前服务的承载。流控触发后,前端进行友好的过渡,根据不同的游戏类型进行特定场景的处理,比如进行一局单机游戏。
- 针对一些更极端的场景,可预见的某个时间段,会有大量的用户登录和创建,前端不验证流控前,直接预先将登录进行打散。针对大量创建用户引起的数据库性能瓶颈问题,可以预先生成一大批新用户数据,放入缓存。
- 注意玩家退出或掉线的逻辑,是否有一些数据回写,判断是否会成为瓶颈。
- 数据库可能出现问题的地方:
- Mongo 提前关闭autosplit,movechunk,retryWrites。
- 数据库连接要预热。
- 前端要注意的一些点:
- 提供1到2个备用的资源CDN。
- 服务器提供两个一级域名和几个二级域名让客户端随机选取使用。
- 考虑前端SDK一些接口遇到性能瓶颈的情况,特别是登录验证,做好预案和降级处理。
- 日志在这种级别下也可能出现性能瓶颈,看下日志库还有没有可优化的地方,在最高峰可以允许短暂的将info级别日志关闭,流量下来之后尽快动态打开。
- 提前做好上线前的各种预案和上线流程,以及异常情况下的降级处理流程,责任到人,文档化,有迹可循,不慌乱。
- 检查最后是否还有遗漏的地方,特别是准备老用户或者压测未覆盖的场景,以及全服广播之类的。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 张嘎!
评论
GitalkValine