procfs 是虚拟文件系统,文件内容在读取时由内核动态生成。它把进程、内存、CPU、网络和内核参数投影成一组文件,因此排障时可以用普通文件工具观察系统。但它不是一个稳定的数据库快照:你读到第一行和最后一行之间,系统状态仍可能已经变化。
读数要和采样时间一起保存
排查内存增长时,只读一次 status 很难区分泄漏、缓存增长和短时峰值。应按固定间隔保存同一组字段,并同时记录进程重启、负载变化和系统总量。读取 maps、smaps 这类大文件时还要注意进程可能正在创建或释放映射,工具要能容忍内容在读取期间改变。
对于高频采样,反复解析很大的文本文件本身也会带来开销。先用粗粒度指标锁定时间窗口,再深入读取具体 PID 或 subsystem 的细节,比把所有 /proc 文件无差别轮询更稳妥。
可写节点要像配置变更一样对待
/proc/sys 下的部分接口会直接改变内核参数。脚本在写入前应保存旧值、说明影响范围,并提供恢复路径。把调优命令和观测命令混在同一段脚本里,很容易让一次排查变成不可解释的系统状态变化。
参考:proc 虚拟文件系统