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

遊戲 Lag 白皮書 › L7 伺服器 OS(kernel)

排程工作 Cron jobs (log rotation, backup, scans)

原因 ID so-cron · 主要負責 基礎設施團隊(伺服器基礎設施)

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

每天固定時間執行的 log 壓縮、備份、安全掃描會占用 CPU 與磁碟。

為什麼 OS 工作在排定的時間執行 → 於是 與遊戲伺服器共用 CPU 與磁碟 → 畫面上 像每天凌晨 4 點這樣的固定時間出現卡頓、慢動作

症狀
卡頓, 慢動作
因素
停滯
誰會遇到
整個伺服器
何時
固定週期
負責單位
主要負責 基礎設施團隊(伺服器基礎設施)
基礎設施團隊要做的事
錯開工作時間、降低優先順序(nice、ionice)、與遊戲伺服器分開(在另一台伺服器上執行)。
圖表上
固定週期飆高 · CPU 使用率、磁碟佇列、伺服器 tick 時間
查看位置
用 crontab 與 systemctl list-timers 整理排程工作的執行時間,並在 tick 飆高的時間點用 pidstat -u -d 看是哪個處理程序在使用 CPU 與磁碟
符合的跡象
tick 每天(或每小時)在同一時間飆高,那個時間點排程工作的處理程序占用 CPU 與磁碟
不符合的跡象
飆高的時間點和每天的固定時間對不上就不是這個原因。每隔幾秒或幾分鐘飆高時是「伺服器 GC 全面暫停」、「計時器集中同時觸發」
確認方式
用基礎設施工具確認(不需要遊戲程式碼)

出處

  1. ionice(1) — Linux manual page util-linux
    idle 類別的工作只在其他程式沒有使用磁碟時才能取得 I/O
  2. systemd.timer(5) — Linux manual page systemd
    以 RandomizedDelaySec 隨機延後排程工作的時間,減少負載集中
  3. systemctl(1) — Linux manual page systemd
    list-timers:依下次執行時間的順序列出 timer unit
  4. pidstat(1) — Linux manual page sysstat
    -u 依處理程序顯示 CPU,-d 依處理程序顯示磁碟 I/O

相關原因

同一層:L7 伺服器 OS(kernel)

同一症狀(卡頓)在其他層的原因

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