故障排查
已收录文章:51篇
-
Golang · Go问答 | 2个月前 | 并发 · 故障排查 · Go问答 · encoding/json · encoding/json atomic.Value Go配置热加载 Decoder 配置复用 旧值残留Go 服务热加载 JSON 配置时,偶发读到旧值通常不是文件没有更新,而是解码目标被复用、缺失字段没有覆盖旧内容,或读写过程没有通过不可变快照切换。本文从一次线上故障切入,给出可复现证据、修复代码和回归检查。311 收藏
-
Linux 文件监控收到 IN_Q_OVERFLOW,不只是把 max_queued_events 调大就结束了。本文从队列溢出的含义、内核参数、消费者处理速度和恢复流程入手,给出可核对的排查命令与重建监控状态的方法。305 收藏
-
用 pidfd_open 获取稳定的进程引用,配合 poll 观察退出、waitid 回收状态,解决长驻监控器因 PID 复用误判进程身份的问题。293 收藏
-
文章 · java教程 | 2个月前 | 依赖管理 · Java · JVM · 故障排查 · java 类加载器 ClassNotFoundException NoClassDefFoundError 依赖排查代码在编译阶段明明能找到类,部署后却抛出 NoClassDefFoundError,通常不是类名写错,而是运行时类路径、传递依赖或初始化阶段出了差异。本文用一个可复现的启动故障,拆开编译期可见、运行期加载和初始化失败三个边界,给出定位与修复检查单。269 收藏
-
Jackson 反序列化日期失败,往往不是 JSON 字段不存在,而是输入格式、时区和字段级格式化配置没有对齐。本文从报错现场出发,用 LocalDateTime、Instant 和 OffsetDateTime 三种类型拆开定位路径,并给出可验证的修复方案。256 收藏
-
服务开启 PrivateTmp=yes 后,宿主机和服务进程看到的 /tmp 不再是同一个目录。本文用一个临时文件消失的现场,解释配置生效值、主进程和挂载信息的核对顺序,并给出共享临时文件与安全隔离的取舍。254 收藏
-
PHP Generator 结束后进程内存没有回落,往往不是 yield 本身泄漏,而是迭代器仍被引用、foreach 引用残留或 finally 尚未完成。本文用可复现实验拆解判断顺序。254 收藏
-
Java 线程池调用 shutdownNow 后,等待队列会被移出,但正在执行的任务只是收到中断请求,并不等于立刻停止。本文从一次停机任务未收敛的现场出发,拆解中断传播、阻塞调用、任务清理和 awaitTermination 验收方法。252 收藏
-
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 收藏