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

游戏卡顿白皮书 › L11 磁盘

写入 core dump Core dump writing

原因 ID dk-coredump · 主责 运维团队·系统运维 · 配合 研发团队·服务器开发

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

服务器崩溃时要把数 GB 内存写到磁盘,重启有时会因此推迟好几分钟。

起因 服务器崩溃,把全部内存写成文件 → 结果 写入数 GB 期间无法重启 → 画面表现 服务器崩溃导致掉线,之后很长时间连不上

症状
连不上/无限加载
因素
停顿
谁会遇到
全服
何时出现
偶尔随机
负责方
主责 运维团队·系统运维 · 配合 研发团队·服务器开发
研发团队要做的事
考虑只保存必要内存的小 dump(minidump)方式,修复崩溃原因。
运维团队要做的事
限制 dump 大小(OS 的 core dump 设置),使用更快的磁盘,把重启和 dump 分开(dump 的压缩、上传在重启后另行处理)。
监控图上
连接成批断开 · 连接数、服务器重启时间
查看位置
把崩溃时间、core 文件大小(coredumpctl list、info,或 core_pattern 指向位置的文件)、文件写完的时间、服务重新拉起的时间放在一起,看这段时间 iostat -x 的 wkB/s
确认依据
崩溃后写入数 GB 的 core 文件期间,磁盘写入一直贴近上限,写完之后才开始重启
排除依据
core dump 已关闭或文件很小,重启仍然慢,是地图加载、DB 冷缓存等服务器启动过程的问题,看“冷缓存(刚重启时)”(db-cold-cache)
确认手段
运维工具即可确认(无需游戏代码)

出处

  1. core(5) — Linux manual page Linux man-pages
    用 RLIMIT_CORE 限制 core 文件大小,用 coredump_filter 选择要保存的内存区域,也可以把 core dump 通过管道交给程序另行处理
  2. Minidump Files Microsoft
    minidump 只保存崩溃转储信息中有用的一部分,生成得快、体积小
  3. coredumpctl(1) — Linux manual page systemd
    list:journal 中记录的 core dump 列表(TIME 为内核报告的崩溃时间),info:各 dump 的详情和写入磁盘的大小
  4. iostat(1) — Linux manual page sysstat
    -x:wkB/s(每秒磁盘写入量)

相关原因

同一层:L11 磁盘

其他层中同样导致“连不上/无限加载”的原因

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