Co powoduje powtarzanie odświeżania poświadczeń RPC po stronie klienta NFS w systemie Linux?

10

Używając nfsstat -c, widzę wysoki „authrefrsh” (znany jako „newcred” w niektórych systemach) liczy na mój komputer kliencki NFS dla operacji takich jak lsi findna katalogach zawierających ~ 1000 plików. Koreluje to z bardzo niską wydajnością (ponad 20 minutowe katalogi katalogów). Buforowane operacje NFS nie wykazują takiego zachowania (authrefrsh lub spowolnienie).

authrefrsh = wywołuje za każdym razem, gdy sprawdzam 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%

Szczegóły połączenia:

$ 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

Środowisko 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

Środowisko:

$ 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)
Chris Betti
źródło
jakieś aktualizacje? Zauważyłem gorszą wydajność klientów NFS z nowszymi jądrami, np. SLES 11 SP2 i CentOS 6.4 w porównaniu do SLES 9 SP4. Jedyną różnicą, którą widzę w statystykach, jest to, że authrefrsh jest bardzo wysoki. Zakładam, że jest to dodatkowy narzut, który powoduje obniżenie wydajności.
Banjer
Brak aktualizacji, przepraszam. Odszedłem z NFS dla mojej aplikacji, ponieważ SSH + SCP było opcją. Problem był paraliżujący :)
Chris Betti
czy jesteś pewien, że to nie jest problem z NFS v3 vs. v4?
kofemann
fyi to pytanie dotyczące Unix SE zawiera więcej potencjalnych klientów na ten temat: unix.stackexchange.com/questions/13557/…
Banjer
1
Więcej na temat historii błędu: bugzilla.redhat.com/show_bug.cgi?id=785931
Deer Hunter

Odpowiedzi:

1

Dokładnie napotkałem ten problem z NFS. Problem w moim przypadku był spowodowany zbyt niskim ustawieniem actimeo . Chociaż możesz nie używać tego dokładnego ustawienia, istnieje cała rodzina ustawień, które mogą powodować spustoszenie: acregmin, acregmax, acdirmin i acdirmax. Zasadniczo dzieje się tak, że system buforuje atrybuty plików z NFS. Te ustawienia wpływają na czas przechowywania atrybutów pliku przed odświeżeniem z NFS. W systemie o dużym obciążeniu odświeżenia stają się bolesne.

Innym problematycznym ustawieniem jest noac . Jeśli tego użyjesz, gwarantujesz, że wszelkie zapisy będą natychmiast dostępne dla wszystkich innych klientów. Jednak zapisy będą czekać na zakończenie zapisywania na pilocie zamiast używania zapisu z tyłu. Może to rzucić system na kolana, jeśli często pisze do NFS.

To ciekawy artykuł na blogu, w którym omawiają różne opcje i ich wpływ na wydajność NFS. Możesz również zajrzeć na stronę manuala NFS, aby uzyskać więcej wskazówek. Niestety authrefrsh może być trochę czerwonym śledziem, a mój problem może być całkowicie niezwiązany, choć z podobnymi objawami.

Foosh
źródło
iirc noac dotyczy również buforowania danych uwierzytelniających, więc zapisywanie metadanych do uprawnień jest natychmiastowe, a nie „zapisywanie”. Nie edytowałem, ponieważ nie jestem teraz pewien.
Florian Heigl,
Widzę tylko problem z wydajnością związany z noac, więc jest to w rzeczywistości fakt, jeśli pracuję z serwerami NFS nie przeznaczonymi dla przedsiębiorstw.
Florian Heigl