故障排查
已收录文章:57篇
-
Java 管理外部子进程时,isAlive、onExit 和 exitValue 解决的是不同问题。本文用一个可复现的小任务拆解退出状态、异步等待、异常处理与句柄回收边界。249 收藏
-
MySQL 8.4 的 InnoDB 死锁发生后会自动选择一个事务回滚,但应用仍要识别错误并重试。本文用订单与库存更新场景演示如何读取 SHOW ENGINE INNODB STATUS、开启 innodb_print_all_deadlocks、判断受害事务并验收重试策略。238 收藏
-
复用 Go 的 time.Timer 时,Stop 和 Reset 的行为会受到 Go 版本、定时器是否已经到期以及是否存在并发接收的影响。本文用一个超时重试场景拆开旧版本排空规则、Go 1.23 的同步定时器语义和可验证的停机边界。236 收藏
-
Java NIO WatchService 适合监听目录变化,但它不是变更日志:事件可能合并、丢弃或因 WatchKey 失效而停止通知。本文从注册目录、处理事件、识别 OVERFLOW、去重和全量重扫几个边界,给出一套可复查的实现方式。231 收藏
-
Redis 写入成功不等于副本已收到,也不等于 AOF 已落盘。本文用 WAIT 和 WAITAOF 拆开复制确认、AOF 持久化确认、超时返回与故障切换边界,给出 redis-cli 验收命令和业务侧选型清单。218 收藏
-
从进程级句柄数量、ulimit -n 和 /proc 文件系统入手,定位 Linux 文件描述符耗尽的真实原因,给出服务管理器配置、分批恢复和验证清单。215 收藏
-
文章 · python教程 | 1个月前 | 配置管理 · logging · 故障排查 · Python教程 · Python logging.config.dictConfig 日志热更新 disable_existing_loggers 日志回滚Python 用 logging.config.dictConfig 更新日志配置时,最容易误伤已有日志器、重复打开文件句柄或留下半套配置。本文用可回滚的热更新流程拆解 disable_existing_loggers、incremental 和文件处理器的边界,并给出复查方法。214 收藏
-
Redis LCS 不只是返回两段文本的最长公共子序列,还能用 IDX 找到两边的匹配区间。本文用配置版本对比说明 LEN、IDX、MINMATCHLEN 和 WITHMATCHLEN 的结果结构、顺序陷阱与生产边界。208 收藏
-
Python 3.14 为 asyncio 增加 ps 和 pstree 命令,可以直接查看运行进程里的任务名、协程栈和等待链。本文用一个可复现的卡住任务场景说明如何选择 PID、读取输出、定位等待点,并给出版本与权限边界。207 收藏
-
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 收藏
-
Linux 上的 systemd 服务突然退出并生成 core 文件时,可以先列出崩溃记录,再查看信号、进程和可执行文件,最后决定是否进入调试器。文章同时说明 Storage、保留期限和权限边界,避免只会下载 core 却找不到可用证据。199 收藏
-
Redis Lua 脚本一旦超过 lua-time-limit,会阻塞其他命令并返回 -BUSY。本文用一个长脚本现场说明如何确认阻塞、何时可以 SCRIPT KILL、写入后为什么只能重启,以及如何在脚本侧避免再次拖住主线程。196 收藏