fd 泄漏排查入口

先用 KOOM 找范围,再按需用 strace 跟打开路径

Posted by BY on April 25, 2026

原始笔记只记了两个关键词:koomstrace。这里把它整理成一条最短可执行链路。

1. 优先工具

原始内容是:

  1. koom
  2. strace

整理后可以把两者分成两个阶段使用。

2. 第一阶段:先用 KOOM 缩小范围

如果当前环境里已经接入 KOOM 或类似 fd 监控能力,优先用它回答两个问题:

  1. fd 数量是否真的持续增长
  2. 增长主要集中在哪类对象或哪段业务路径附近

它更适合做“先发现问题、先缩小范围”,尤其是在 Android App 或长期运行进程里。

3. 第二阶段:再用 strace 跟系统调用

当你已经确认存在 fd 泄漏,或者需要进一步看“是谁打开了但没关”,再上 strace

它更适合回答:

  • 哪个线程 / 进程在频繁调用 opensocketaccept
  • 某些 fd 有没有对应的 close
  • 泄漏是否和某个固定文件、目录、socket 路径有关

4. 一个最小排查思路

把原始记录展开后,实际可以按下面顺序回看:

  1. 先确认现象
    例如进程 fd 数量持续上涨,或已经逼近系统上限。
  2. 用 KOOM 或现有监控判断增长趋势
    先确认是不是稳定复现,以及大概从哪个功能进入异常区间。
  3. 在可复现场景下补 strace
    重点跟 openatclosesocketaccept 这类系统调用。
  4. 对照业务动作回放
    看是否每做一次相同操作,就会新增一批没有释放的 fd。

5. 回看这篇时的提醒

  • 监控工具负责“发现和缩小范围”
  • strace 负责“确认系统调用层面的打开 / 关闭行为”
  • 如果线上环境不适合直接 strace,优先在可复现的测试环境复刻