高负载下 NFS 性能不佳

高负载下 NFS 性能不佳

我有两台 Debian 服务器连接到一个共享 NFS 服务器。

坐骑:

nfs.internal.com:/volume1/SHARE on /share type nfs (rw,nosuid,relatime,sync,vers=3,rsize=131072,wsize=131072,namlen=255,acregmin=0,acregmax=0,acdirmin=0,acdirmax=0,soft,noac,nordirplus,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=172.16.0.100,mountvers=3,mountport=892,mountproto=tcp,fsc,lookupcache=none,local_lock=none,addr=172.16.0.100)

有时,服务器上的负载会增加。似乎有一个断点,负载导致 NFS 操作速度减慢到足以发生失控负载情况,最终达到为此服务器上运行的服务配置的进程限制 (1500)。

当一台服务器上的负载增加时,另一台服务器不会受到影响,因此我不认为网络或 NFS 服务器是罪魁祸首。

正常情况下,负载~10

ops/s       rpc bklog
20637.000           0.000

getattr:           ops/s            kB/s           kB/op         retrans    avg RTT (ms)    avg exe (ms)
               10453.000        2334.176           0.223        0 (0.0%)           0.339           0.467
access:            ops/s            kB/s           kB/op         retrans    avg RTT (ms)    avg exe (ms)
                4893.000        1139.078           0.233        0 (0.0%)           0.338           0.469

在“中等”负载~100下:

ops/s       rpc bklog
13374.200           0.000

read:              ops/s            kB/s           kB/op         retrans    avg RTT (ms)    avg exe (ms)
                  10.600        1202.169         113.412        0 (0.0%)           0.623          26.868
write:             ops/s            kB/s           kB/op         retrans    avg RTT (ms)    avg exe (ms)
                   7.600           5.462           0.719        0 (0.0%)           0.553           7.395

我没有保存它,但是在最高负载水平 1500 下,平均 exe 时间将达到 4-5 秒。

据我所知,远高于 RTT 的 exe 值意味着请求在本地服务器上排队而不是在 NFS 服务器上等待。

听起来好像同时向 NFS 服务器发出的请求数是由 指定的sunrpc.tcp_slot_table_entries。在最近的内核版本中,这个值动态增加到sunrpc.tcp_max_slot_table_entries,但我从未见过它超过默认值 2。

这可能是导致性能问题的原因吗?什么原因会阻止这个值按应有的方式扩展?

相关内容