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

游戏卡顿白皮书 › L7 服务器操作系统(内核)

定时任务 Cron jobs (log rotation, backup, scans)

原因 ID so-cron · 主责 运维团队·系统运维

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

每天在同一时刻运行的日志压缩、备份、安全扫描会占用 CPU 和磁盘。

起因 操作系统任务在固定时刻运行 → 结果 与游戏服务器争用 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 单元
  4. pidstat(1) — Linux manual page sysstat
    -u 按进程显示 CPU,-d 按进程显示磁盘 I/O

相关原因

同一层:L7 服务器操作系统(内核)

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

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