对lsof、tcpdump、strace命令的简单记录
1.lsof(List Open Files) —— “谁占用了资源”核心哲学Linux 中一切皆文件包括磁盘文件、网络 Socket、设备。常用操作lsof -i :15000查看指定端口的进程占用及连接状态LISTEN/ESTABLISHED。lsof -p [PID]列出该进程打开的所有文件包括动态库(.so)程序运行依赖的环境。存储引擎文件(如 Badger 的.vlog,.mem)观察 LSM-tree 的存储布局。标准流(1w,2w)确认日志被重定向到了哪个文件。句柄类型(eventpoll,eventfd)观察程序是否使用了异步 IO 模型。2.tcpdump—— “协议在说什么”核心哲学不触动程序本身从网卡抓取最真实的通信数据。常用操作sudo tcpdump -i lo port 15000 -nn -X-nn禁止解析主机名和端口名提高显示速度。-X同时显示十六进制与 ASCII 码最关键用于看业务逻辑。实战价值校验协议实现观察Raft.AppendEntries等 RPC 调用是否发出。观察状态变化通过十六进制位直接读取包内的Term任期或Index索引无需在代码里打日志即可验证分布式一致性逻辑。3.strace—— “程序正在内核干什么”核心哲学监控程序与内核之间的“对话”系统调用。常用操作sudo strace -p [PID]实时跟踪程序的运行轨迹。-e traceopenat只看程序打开了哪些文件。-c统计所有系统调用的耗时分布。关键指标识别futex代表锁竞争。高频率出现说明代码中存在 Mutex 瓶颈。epoll_pwait代表网络 IO 等待。观察程序是在忙着处理请求还是在空转。write/read观察数据落盘或网络发送的真实频率。 综合应用场景排查“程序卡死”第一步用lsof确认进程还在不在端口连接是否断开。第二步用strace观察是否有大量的futex死锁或反复读写某个文件。第三步用tcpdump确认是否有流量进入判断是“外界没发包”还是“我收了包但不处理”。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2607221.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!