标准答案

  1. 时间戳通常表示一个绝对时刻,时区主要影响展示和本地时间解析;数据库和日志应明确保存与展示语义。
  2. 排查要看系统当前时间、时区、同步服务状态、偏移量和容器是否共享宿主机时钟。
  3. 时间回拨或跳变可能影响定时器、缓存过期和按时间排序,业务测量时应区分 wall clock 与 monotonic clock。
  4. 修复应统一 UTC 或明确时区约定、启用可靠同步并避免用本地时间计算持续时长。

题目解析

wall clock 表示现实世界的时间点,可能因 NTP 校时、人工修改或闰秒处理发生跳变;monotonic clock 只保证用于比较间隔,不适合直接写入日志或协议。服务应统一保存绝对时间的格式和时区,同时用单调时钟计算 timeout、延迟和任务持续时间。

排查要同时看 timedatectl、chrony/ntpd 状态、偏移量、时区和容器时钟来源。跨服务排序应使用带时区的 UTC 时间和请求 ID,不能仅依赖格式化后的本地时间;时间同步恢复后还要检查缓存、签名、分布式锁和定时任务是否受到跳变影响。

常见误区

  • 误区:只看 date 不看同步状态。改正:查看时区、NTP/chrony、偏移量和最近校时记录。
  • 误区:用格式化后的本地时间做跨服务排序。改正:使用带时区的 UTC 时间、请求 ID 和单调时间辅助排序。
  • 误区:用 wall clock 计算请求耗时。改正:使用 monotonic clock 计算持续时间。

作者信息