Linux 系统中怎么排查分布式文件系统网络抖动引发的 I/O 挂起

浅宇吖_4778

浅宇吖_4778

2026-10-04

790人浏览

原创

根本原因在于网络抖动与远程存储协议协同作用:短暂丢包或延迟尖峰会触发客户端重传、服务端超时、内核缓存失效,甚至挂载点soft lockup;排查需将网络抖动和i/o阻塞在时间轴上对齐,而非孤立分析。

linux 系统中怎么排查分布式文件系统网络抖动引发的 i/o 挂起

分布式文件系统(如 NFS、CephFS、GlusterFS)的 I/O 挂起,往往不是单纯的“磁盘慢”或“网络断”,而是网络抖动与远程存储协议协同作用的结果:一次短暂的丢包或延迟尖峰,可能触发客户端重传、服务器端连接超时、内核缓存失效、甚至挂载点进入“soft lockup”状态。排查这类问题,关键在于把“网络链路抖动”和“I/O 调用阻塞”在时间轴上对齐,而不是分开查。

先确认挂起是否真由网络抖动引发

别一上来就抓包。先做三件事快速过滤:

  • 执行 mount | grep -E "(nfs|ceph|gluster)",看挂载选项里是否有 soft(软挂载)。如果是,I/O 会因超时直接报错返回(如 Connection timed out);但如果是 hard,intr(硬挂载可中断),挂起更常见,也更难排查。
  • 运行 cat /proc/mounts | grep your-mount,检查 timeout= 和 retrans= 值。默认 timeout 多为 60 秒,retrans 为 3 —— 这意味着客户端最多等近 3 分钟才放弃,期间进程就卡在 D 状态(不可中断睡眠)。
  • 用 ps aux | awk '$8 ~ /^D$/ {print}' 找出所有 D 状态进程,再结合 lsof -p PID 确认它们是否都在访问该挂载点路径。如果大量进程卡在同一个目录下读写,基本锁定是挂载层问题。

定位抖动发生的时间窗口与对应网络行为

网络抖动本身不报警,但它的后果会在多个层面留下痕迹。你需要同步采集三类日志:

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载
  • 客户端内核日志:运行 dmesg -T | grep -i "nfs\|rpc\|timeout\|server",重点找类似 "NFS: server xxx not responding, still trying" 或 "RPC: failed to send" 的记录,记下精确时间戳。
  • 网络层指标:在抖动疑似时段,用 ping -c 60 -i 0.1 target-nfs-server 记录 RTT 分布;再用 mtr --report --interval 1 --count 60 target-nfs-server 查中间跳点丢包。注意:不要只看平均延迟,要看 RTT 方差(rttvar) 和 最大延迟突刺 —— 比如平时 2ms,突然跳到 800ms,就是典型抖动。
  • NFS 客户端统计:执行 nfsstat -c(客户端统计),重点关注 retrans(重传次数)和 timeouts(超时数)列。若这两项在挂起前后陡增,说明网络已影响协议层。

验证是否为协议栈级阻塞而非应用层卡死

很多场景下,进程看似“挂起”,实则是应用自己没设超时、循环重试导致的假象。要区分清楚:

  • 用 strace -p PID -e trace=connect,sendto,recvfrom,read,write 跟踪一个卡住的进程。如果看到反复 recvfrom() = -1 EAGAIN 或长时间停在 read() 不返回,说明是内核 NFS 客户端在等响应;如果看到 read() 后立刻又调用 read(),可能是应用逻辑问题。
  • 检查 /proc/sys/sunrpc/ 下的关键参数:
      • tcp_fin_timeout(默认 60)太小会导致连接频繁重建;
      • timeo(NFS 重传初始超时,单位 1/10 秒)设得太短(如 3 即 300ms)会让轻微抖动直接触发重传;
      • retrans(重传次数)过高会拉长整体等待时间。这些值可在挂载时通过 timeo=600,retrans=2 调整。

检查服务端与中间链路是否存在隐性瓶颈

客户端看到的是“连不上”,但根因可能在远端:

  • 登录 NFS 服务端,运行 rpcinfo -p localhost 确认 nfsd、mountd 是否正常注册;再用 ss -tnp | grep :2049 看端口监听和 ESTAB 连接数是否异常堆积。
  • 检查服务端磁盘 IO:如果服务端自身 %wa 高或 iostat -x 1 显示 await > 50ms,那么客户端的“网络抖动”其实是服务端 IO 慢导致响应延迟,被 NFS 协议误判为网络问题。
  • 排查中间设备:特别是虚拟化环境中的 vSwitch、SDN 控制器或物理交换机的 buffer 溢出。用 ethtool -S eth0 | grep -i "drop\|error" 查收发丢包计数;若有明显增长,说明链路层已开始丢帧,比 TCP 层抖动更底层。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

880

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2632

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

876

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

789

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2396

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4412

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

707

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习