故障排查
已收录文章:71篇
-
Redis Hash 字段过期后,整条 Hash 不一定会立刻消失。用 HEXPIRE 设置字段级 TTL,用 HTTL 或 HPTTL 检查精度,再结合 HGET、HLEN 和主动读取判断字段是否已不可见;验收时要区分过期时间写入失败、惰性删除和整 key 生命周期。138 收藏
-
文章 · linux | 1个月前 | Linux · 故障排查 · 服务管理 · Linux 服务状态 active exited Type=oneshot RemainAfterExit 常驻进程服务状态显示 active (exited) 不一定代表进程仍在运行。本文拆解 oneshot 服务的状态含义,给出常驻服务与一次性任务的判断、配置改法和复测命令。331 收藏
-
文章 · java教程 | 1个月前 | 故障排查 · Java教程 · 虚拟线程 · synchronized reentrantlock 虚拟线程 JFR Java 21 VirtualThreadPinnedJava 21 虚拟线程并不是开得越多越快。只要把慢 I/O 放进 synchronized,虚拟线程就可能 pin 住承载它的平台线程,吞吐随并发上升反而下降。本文用 JFR 和 tracePinnedThreads 还原定位过程,并给出锁替换与版本边界。343 收藏
-
Redis Sorted Set 用 ZRANGE BYSCORE 做时间范围分页时,重复分数和闭区间很容易让数据重复或漏掉。本文从线上分页现场出发,给出 score 加 member 的边界游标写法、复查命令和回滚判断。405 收藏
-
Golang · Go教程 | 1个月前 | golang · JSON · 故障排查 · Go教程 · 接口设计 · JSON Go 接口兼容性 DisallowUnknownFields 严格解码接口增加 json.Decoder.DisallowUnknownFields 后,旧客户端多传字段会从静默兼容变成 400。本文用一个订单接口故障复盘这个变化,说明如何定位触发条件、保留严格校验的收益,并通过灰度和版本边界避免再次误伤旧请求。174 收藏
-
Linux 出现僵尸进程时,进程已经结束,却因为父进程没有回收退出状态而暂时留在进程表里。本文用 ps 的 Z 状态、PPID 和父进程回收逻辑定位问题,再给出可回滚的处理顺序,避免一上来就误杀正常服务。478 收藏
-
文章 · python教程 | 2个月前 | 并发 · python · 故障排查 · asyncio · Python asyncio.create_task Python 任务取消 asyncio CancelledError Python 异步任务收尾Python 异步接口超时后,后台任务仍在访问数据库或写文件,常见原因不是 cancel() 失效,而是任务没有被保存、取消没有被等待,或协程吞掉了 CancelledError。本文用一个可复现的 asyncio 故障现场拆开这条链路,并给出带超时、回收和日志核对的改法。490 收藏
-
Go 服务突然出现 too many open files,先别急着把 ulimit 调大。更可靠的顺序是确认进程 FD 是否持续增长,区分网络连接、日志文件和管道,再用 /proc、lsof 与 Go pprof 找到没有关闭的资源,修复后复查增长曲线,必要时保留可回退的上限变更。255 收藏
-
Golang · Go教程 | 2个月前 | 并发 · HTTP · 性能优化 · 故障排查 · Go教程 · Go Goroutine 连接复用 pprof http.Client close Response.BodyGo 服务里调用 http.Client 后,Response.Body 没有在所有路径关闭,连接会被持续占用,pprof 里常能看到 net/http 相关 goroutine 增长。用 defer resp.Body.Close()、完整处理响应体、复用 Client,并通过压测与连接指标复查,可以把这类问题收住。201 收藏
-
本文用服务启动失败的场景,演示如何用 ss、lsof、ps 定位占用端口的进程,并根据业务归属选择停止旧进程、修改端口或回收僵尸进程。360 收藏
-
本文用一次 MySQL 连接数告警场景,演示如何区分连接池突增、慢 SQL 堵塞和长事务占用,并给出排查命令和上线兜底建议。404 收藏
-
本文从一次内存告警出发,演示如何用 free、top、ps 等命令判断可用内存、定位高占用进程,并区分文件缓存增长、进程内存异常和 OOM 风险。108 收藏