nfs 端口_Linux挂载NFS,偶发执行df命令卡顿

本文介绍了在Linux环境下,NFS客户端执行df命令时出现卡顿的问题。通过strace和网络抓包分析,排除了网络延迟和后端磁盘瓶颈,发现是NFS v4协议的串行特性以及服务器端nfsd进程数量不足导致的。建议使用NFS v3协议并调整nfsd进程数以优化性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

使用一台机器通过挂载scsi硬盘,然后通过nfs共享出去给客户端使用。

现象

客户端在使用的时候,出现nfs的文件系统极其的慢,执行df 命令,还会直接卡住约20秒左右

分析过程

判断df卡住的地方

在客户端机器,查看cpu、内存,网卡流量等,均很低,处于正常状态。

在执行df命令的时候,通过strace,跟踪执行情况,

b65b419d5eb06883301f278fbcd5cc02.png

卡在nfs文件系统的stat部分。

判断是否为网络问题

在客户端和server端,同时开启抓包,然后执行df命令,查看两边数据包收到的延时 抓包命令

# clien端
tcpdump -i eth1 \(tcp src port 812 and tcp dst port 2049\) or \(tcp src port 2049 and tcp dst port 812\) -w client04.pcap

# server端
tcpdump -i bond1 \(tcp src port 812 and tcp dst port 2049\) or \(tcp src port 2049 and tcp dst port 812\) -w server-04.pcap

抓包指定了nfs的端口。

76aca3cab774b119f6c075448fe2cb16.png

9e2c3e01a4c8f43f0fde85359622e25a.png

发现client和server端收到的包没有延迟,客户端发包之后,服务端里面就收到,服务端发出之后,客户端也立马就收到,即表示链路上没有延迟。但是两次发包间隔时间较长,这就是卡顿的地方。

判断后端盘是否为瓶颈

由于客户存放的小文件较多,在server端进行小文件读写测试,整体iops较小,但是时延正常。

967d1130072966c07c9fc1c372989c38.png

同时在,server端开启磁盘iostat监控,发现,卡顿的同时,部分文件系统的盘util在100%左右。

同时伴随着NFSD进程有卡住状态

07365a64cbfbd71143a462c801cb98d6.png

初步结论

客户端使用的nfs v4协议进行挂载 nfs v4协议open/close为串行的,server上挂载了多个盘,建了了多个文件系统,共享出去。如果后端某一个磁盘响应慢,会拖慢其他其他盘的nfs请求。

c46efbce1d5b84e7184e58b112e0149f.png

建议客户使用v3协议进行挂载

最终解决

客户通过v3挂载,并将一些频繁读写的文件迁移出文件系统,还是会偶发卡顿现象。

在server 端查看nfsd进程,还是有D住的情况,所以导致了卡顿。

这里的原因是,在server 端默认的nfsd进程的数量,导致了卡顿。可以通过调大server端nfsd的进程数。临时修改,修改方法,重启后失效。

echo 256 > /proc/fs/nfsd/threads
  • 永久修改

修改 /etc/sysconfig/nfs 配置文件RPCNFSDARGS=256

总结

nfs的卡顿网络、盘的原因,nfs本身的原因,都是可能的。

这里列举了几个场景的排查思路和方法,在定位nfs的问题的时候供参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值