是什么导致Linux NFS客户端RPC凭据重复刷新?


10

使用nfsstat -c,我在NFS客户端PC上看到了很高的“ authrefrsh”(在某些系统上称为“ newcred”),对于诸如此类的操作ls以及find包含约1000个文件的目录的操作。这与非常差的性能(超过20分钟的目录列表)相关。缓存的NFS操作不表现出此行为(authrefrsh或减慢)。

authrefrsh =每次我检查nfsstat时都会调用:

$ nfsstat -c

Client rpc stats:
calls      retrans    authrefrsh
280462     0          280462

Client nfs v3:
null         getattr      setattr      lookup       access       readlink
0         0% 126990   45% 0         0% 10062     3% 58592    20% 0         0%
read         write        create       mkdir        symlink      mknod
25030     8% 0         0% 65        0% 0         0% 2         0% 0         0%
remove       rmdir        rename       link         readdir      readdirplus
0         0% 0         0% 0         0% 0         0% 0         0% 59654    21%
fsstat       fsinfo       pathconf     commit
0         0% 20        0% 10        0% 0         0%

连接详细信息:

$ mount.nfs -v nfshost:/share/dir /somedir
mount.nfs: timeout set for Tue Feb 21 18:12:18 2012
mount.nfs: trying text-based options 'vers=4,addr=192.168.xx.xx,clientaddr=192.168.xx.xx'
mount.nfs: mount(2): Operation not permitted
mount.nfs: trying text-based options 'addr=192.168.xx.xx'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 192.168.xx.xx prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 192.168.xx.xx prog 100005 vers 3 prot UDP port 1011
nfshost:/share/dir on /somedir type nfs

nfshost RPC环境:

$ rpcinfo -T udp nfshost nfs
program 100003 version 2 ready and waiting
program 100003 version 3 ready and waiting
program 100003 version 4 ready and waiting

$ rpcinfo -T udp nfshost mountd
program 100005 version 1 ready and waiting
program 100005 version 2 ready and waiting
program 100005 version 3 ready and waiting

$ rpcinfo -T udp nfshost nlockmgr
program 100021 version 1 ready and waiting
rpcinfo: RPC: Program/version mismatch; low version = 1, high version = 4
program 100021 version 2 is not available
program 100021 version 3 ready and waiting
program 100021 version 4 ready and waiting

$ rpcinfo -T udp nfshost llockmgr
rpcinfo: RPC: Program not registered

$ rpcinfo nfshost
program version netid     address                service    owner
100000    2    tcp       0.0.0.0.0.111          portmapper unknown
100000    2    udp       0.0.0.0.0.111          portmapper unknown
100024    1    udp       0.0.0.0.2.212          status     unknown
100024    1    tcp       0.0.0.0.2.215          status     unknown
100021    1    udp       0.0.0.0.226.67         nlockmgr   unknown
100021    3    udp       0.0.0.0.226.67         nlockmgr   unknown
100021    4    udp       0.0.0.0.226.67         nlockmgr   unknown
100021    1    tcp       0.0.0.0.134.55         nlockmgr   unknown
100021    3    tcp       0.0.0.0.134.55         nlockmgr   unknown
100021    4    tcp       0.0.0.0.134.55         nlockmgr   unknown
100011    1    udp       0.0.0.0.3.230          rquotad    unknown
100011    2    udp       0.0.0.0.3.230          rquotad    unknown
100011    1    tcp       0.0.0.0.3.233          rquotad    unknown
100011    2    tcp       0.0.0.0.3.233          rquotad    unknown
100003    2    udp       0.0.0.0.8.1            nfs        unknown
100003    3    udp       0.0.0.0.8.1            nfs        unknown
100003    4    udp       0.0.0.0.8.1            nfs        unknown
100003    2    tcp       0.0.0.0.8.1            nfs        unknown
100003    3    tcp       0.0.0.0.8.1            nfs        unknown
100003    4    tcp       0.0.0.0.8.1            nfs        unknown
100005    1    udp       0.0.0.0.3.243          mountd     unknown
100005    1    tcp       0.0.0.0.3.246          mountd     unknown
100005    2    udp       0.0.0.0.3.243          mountd     unknown
100005    2    tcp       0.0.0.0.3.246          mountd     unknown
100005    3    udp       0.0.0.0.3.243          mountd     unknown
100005    3    tcp       0.0.0.0.3.246          mountd     unknown

环境:

$ uname -a
Linux whiteheat 3.0.0-15-generic #26-Ubuntu SMP Fri Jan 20 17:23:00 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

$ mount.nfs a b -V
mount.nfs: (linux nfs-utils 1.2.4)

任何更新?我注意到带有较新内核(例如SLES 11 SP2和CentOS 6.4与SLES 9 SP4)的nfs客户端的性能较差。我在统计资料中看到的唯一区别是authrefrsh非常高。我假设这是造成性能下降的额外开销。
巴涅尔

没有更新,对不起。对于我的应用程序,我已不再使用NFS,因为可以选择使用SSH + SCP。问题令人担忧:)
克里斯·贝蒂

您确定不是nfs v3与v4问题?
kofemann

FYI这与UNIX SE问题,在这个问题上更多的线索: unix.stackexchange.com/questions/13557/...
Banjer

1
有关错误历史的更多信息,请访问:bugzilla.redhat.com/show_bug.cgi?id=785931
Deer Hunter

Answers:


1

我遇到了NFS的确切问题。就我而言,问题是由于actimeo设置得太低所致。尽管您可能没有使用此精确设置,但有可能会造成严重破坏的一整套设置:acregmin,acregmax,acdirmin和acdirmax。本质上发生的是系统正在从NFS缓存文件属性。这些设置会影响从NFS刷新之前文件属性的保留时间。在使用率很高的系统上,这些刷新变得很明显。

另一个有问题的设置是noac。如果使用此选项,则保证所有其他客户端都可以立即使用任何写操作。但是,写操作将一直等到完成对远程的写操作,而不是使用后写操作。如果它经常写入NFS,则可能使系统崩溃。

是一篇有趣的博客文章,他们讨论了不同的选项及其对NFS性能的影响。您也可以查看NFS 的手册页以获取更多指导。不幸的是,authrefrsh可能会引起一些麻烦,尽管出现类似症状,但我的问题可能完全无关。


iirc noac也只涉及凭证缓存,因此对权限元数据的写入是立即的,没有“写入”。没有编辑,因为我现在还不确定。
Florian Heigl,2015年

我只是看到与noac相关的性能问题,因此,如果使用非企业NFS服务器,这实际上是一件事情。
Florian Heigl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.