“用户说下单慢”:从一句废话到根因的定位漏斗——traceId、ELK、链路追踪与排查方法论总纲
客服转来一句“下单好慢”,怎么在半小时内定位到具体机构、具体接口、具体那一行调用?本文用一个完整时间线讲 traceId 贯穿(MDC、网关、Dubbo、MQ、线程池的坑)、Kibana KQL 检索、SkyWalking 看 span 耗时,并总结排查先问的 5 个问题和“定位漏斗”。
从一个关键词,发现新的思路。
客服转来一句“下单好慢”,怎么在半小时内定位到具体机构、具体接口、具体那一行调用?本文用一个完整时间线讲 traceId 贯穿(MDC、网关、Dubbo、MQ、线程池的坑)、Kibana KQL 检索、SkyWalking 看 span 耗时,并总结排查先问的 5 个问题和“定位漏斗”。
凌晨磁盘告警,df 显示根分区 100%,罪魁是 /var/lib/docker。用 docker system df -v、du 逐层下钻,定位到 json-file 日志无限增长,讲清 max-size/max-file 配置、docker system prune 各选项的风险(--volumes 会删数据)与构建缓存清理。
磁盘告警 100%,du 加起来却只有一半。原来是日志被 rm 了,Java 进程还握着文件句柄。用 lsof +L1 找到它,/proc/PID/fd 截断止血,再顺带讲 inode 耗尽、大文件定位和 logrotate copytruncate。
前端喊“接口 502”,后端说“我这儿好好的”。本文讲清 502(上游连不上/被掐断)与 504(上游超时)的区别,用 error.log 原文加自定义 access_log 三个 upstream 变量定位问题,并解释 keepalive、重启瞬间 502 与 proxy_next_upstream 的坑。