某些活动后 NFS 性能低下

某些活动后 NFS 性能低下

我有一个 Linux 集群,其中的节点具有来自中央服务器的 NFS 挂载点(实际上节点是无盘的,并通过 PXE 启动)。在节点的 NFS 挂载点上进行一些活动后,NFS 似乎急剧变慢,例如 ssh 登录需要几分钟,依赖于 nfs 共享上某些文件的程序需要几分钟才能启动,等等。

重新启动服务器上的 nfs 服务和/或重新启动有问题的节点可以在短时间内解决问题,但它总是很快再次出现。(同时执行这两项操作似乎可以更长时间地解决问题)

服务器和节点运行 CentOS 7.4,Linux 内核为 3.10.0-693.el7.x86_64 x86_64,使用 NFSv4。存储由 4 个 HDD 组成,捆绑为 RAID10 (/dev/sda)。服务器和节点之间的网络连接均为 1GBit/s,目前没有发现丢包现象。

依赖于先前活动的 NFS 反应非常缓慢的原因可能是什么?

当文件系统反应缓慢时,节点上 nfsstat 的简短输出为:

客户端 rpc 统计信息:

调用 | 重新翻译 | authrefrsh
44154157 | 0 | 44154258

客户端 nfs v4:

空 | 读 | 写 | 提交 | 打开 | open_conf
0 0% | 58125 0% | 422038 1% | 6846 0% | 139899 0% | 0 0%

open_noat | open_dgrd | 关闭 | setattr | fsinfo | 更新
30775986 95% | 144 0% | 70464 0% | 2639 0% | 9 0% | 0

nfsiostat 的输出如下所示(对于快速 nfs):

op/s rpc bklog
3596.86 0.00

读取:ops/s | kB/s | kB/op | retrans 平均 RTT(毫秒)| 平均 exe(毫秒)
0.224 | 0.289 | 1.292 | 0(0.0%)0.441 | 1.151

写入:ops/s | kB/s | kB/op | retrans | 平均 RTT(毫秒)| 平均 exe(毫秒)
33.837 | 47.329 | 1.399 | 0(0.0%)| 0.452 | 1.406

nfsiostat 的输出如下(对于慢速 nfs):

op/s | rpc bklog 183.75 | 0.00

读取:ops/s | kB/s | kB/op | retrans | 平均 RTT(毫秒)| 平均 exe(毫秒)
0.012 | 1.158 | 99.426 | 0(0.0%)| 2.708 | 16.656

写入:ops/s | kB/s | kB/op | 重新传输 平均 RTT(毫秒)| 平均 exe(毫秒)
0.295 | 1.882 | 6.387 | 2(0.0%)| 0.448 | 0.560

在这里我们看到更低的 ops/s 和更高的 kB/op 以及平均 exe 持续时间。

中央服务器上的 iostat(当一切正常时):

Linux 3.10.0-693.el7.x86_64 2019 年 9 月 27 日 _x86_64_(4 CPU)

平均 CPU:%用户%nice%系统%iowait%steal%idle
0.48 0.00 0.37 0.02 0.00 99.12

设备:tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdb 10.83 40.61 67.55 9423785 15673740
sda 0.71 5.67 2.54 1315496 590208
sdc 10.47 18.96 67.55 4398709 15673740
md127 0.00 0.12 0.00 27241 80
md126 10.83 59.42 66.92 13787337 15526832
md125 0.00 0.01 0.00 2228 0

当一切都很慢时也是一样(但没有很大的区别):

Linux 3.10.0-693.el7.x86_64 2019 年 10 月 14 日 _x86_64_(4 CPU)

平均 CPU:%用户%nice%系统%iowait%steal%idle
2.94 0.00 1.03 0.01 0.00 96.02

设备:tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdb 15.05 261.13 52.53 449712785 90460908
sda 0.54 7.23 35.45 12443668 61054912
sdc 14.97 257.76 52.53 443917089 90460908
md127 0.00 0.02 0.00 27241 112
md126 11.57 8.68 51.72 14953949 89075284
md125 0.00 0.00 0.00 2228 8

如果您需要任何进一步的信息,请告诉我。

答案1

我首先想到的是,你可能想要检查你的 iostats此后,它开始听起来像是一个缓存问题。

答案2

最后,我通过更新到 CentOS 8 解决了这个问题。问题的一个原因可能是节点上的内核版本不同,但我无法再检查这一点。

相关内容