한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

游戏卡顿白皮书 › L9 服务器游戏进程

定时器集中触发 Synchronized timers

原因 ID sp-timer-burst · 主责 研发团队·服务器开发

在含图示和实验的完整版中打开此卡片 →

所有怪物刷新、所有 buff 到期、整点奖励都挤在同一个 tick 时,那个 tick 的负载就会高出几十倍。

起因 刷新、到期、奖励、自动存盘的定时器对齐到了同一时刻 → 结果 那一个 tick 的工作量是平时的几十倍 → 画面表现 每到固定时刻就顿一下

症状
卡住, 一卡一卡
因素
停顿
谁会遇到
特定地点/分线, 全服
何时出现
固定周期
负责方
主责 研发团队·服务器开发
研发团队要做的事
把定时器时刻随机错开一点;分到多个 tick 处理。
监控图上
周期性尖峰 · 服务器 tick 耗时
查看位置
收集 tick 耗时冲高的各个时刻,看间隔(整点、每 5 分钟等)。与在同一时刻运行的刷新、buff 到期、奖励、自动存盘定时器列表对照
确认依据
tick 每次都在同一时刻或以相同间隔冲高,且那个时刻有集中触发的游戏定时任务
排除依据
有周期,但与 GC 日志中的停顿时刻或服务器的 cron、备份时刻重合,看“服务器 GC 全局停顿”“定时任务”
确认手段
需要游戏服务器/客户端的日志和指标

出处

  1. Timeouts, retries, and backoff with jitter AWS
    Amazon Builders' Library。给所有定时器、周期任务、延迟任务加上随机抖动(jitter),打散集中在同一时刻的负载;多台服务器每分钟一次的请求都挤在每分钟最初几秒的案例

相关原因

同一层:L9 服务器游戏进程

其他层中同样导致“卡住”的原因

查看含图示和实验的原卡片