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

遊戲 Lag 白皮書 › L9 伺服器遊戲程式

計時器集中同時觸發 Synchronized timers

原因 ID sp-timer-burst · 主要負責 遊戲開發團隊(伺服器開發)

在含圖解與實驗的完整版中開啟卡片 →

所有怪物重生、所有 buff 到期、整點獎勵都擠在同一個 tick 時,那一個 tick 的負擔會變成平常的數十倍。

為什麼 重生、到期、獎勵、自動存檔的計時器都設在同一時刻 → 於是 那一個 tick 的工作量是平常的數十倍 → 畫面上 每到固定時刻就頓一下

症狀
定格, 卡頓
因素
停滯
誰會遇到
特定地點/頻道, 整個伺服器
何時
固定週期
負責單位
主要負責 遊戲開發團隊(伺服器開發)
遊戲開發團隊要做的事
讓計時器時刻隨機錯開一些,並分散到多個 tick 處理。
圖表上
固定週期飆高 · 伺服器 tick 時間
查看位置
收集 tick 時間飆高的時間點並看其間隔(整點、每 5 分鐘等)。與同一時刻執行的重生、buff 到期、獎勵、自動存檔計時器清單對照
符合的跡象
tick 每次都在相同時刻或以相同間隔飆高,且那個時刻有同時觸發的遊戲計時器工作
不符合的跡象
有週期性,但與 GC log 的暫停時間點或伺服器 cron、備份的時間重疊時,是伺服器 GC 全面暫停或排程工作
確認方式
需要遊戲伺服器/用戶端的 log 與指標

出處

  1. Timeouts, retries, and backoff with jitter AWS
    Amazon Builders' Library。在所有計時器、週期性工作、延遲工作中加入隨機抖動(jitter),打散擠在同一時刻的負載;多台伺服器每 1 分鐘一次的請求全擠在每分鐘頭幾秒的案例

相關原因

同一層:L9 伺服器遊戲程式

同一症狀(定格)在其他層的原因

查看含圖解與實驗的完整版卡片