Quelles sont les causes de l'actualisation répétée des informations d'identification RPC côté client NFS Linux?

10

En utilisant nfsstat -c, je vois un nombre élevé d '"authrefrsh" (connu sous le nom de "newcred" sur certains systèmes) compter sur mon PC client NFS pour des opérations similaires lset findsur des répertoires contenant environ 1000 fichiers. Cela est en corrélation avec de très mauvaises performances (listes d'annuaire de plus de 20 minutes). Les opérations NFS mises en cache ne présentent pas ce comportement (l'authrefrsh ou le ralentissement).

authrefrsh = appelle chaque fois que je vérifie 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%

Détails de connexion:

$ 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

Environnement RPC nfshost:

$ 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

Environnement:

$ 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
la source
les mises à jour? J'ai remarqué de moins bonnes performances des clients nfs avec des noyaux plus récents, par exemple SLES 11 SP2 et CentOS 6.4 vs SLES 9 SP4. La seule différence que je vois dans les statistiques est que l'authrefrsh est très élevé. Je suppose que c'est une surcharge supplémentaire qui provoque une dégradation des performances.
Banjer
Aucune mise à jour, désolé. Je me suis éloigné de NFS pour mon application, car SSH + SCP était une option. Le problème était paralysant :)
Chris Betti
êtes-vous sûr que ce n'est pas un problème nfs v3 vs v4?
kofemann
fyi cette question Unix SE a plus de pistes sur ce problème: unix.stackexchange.com/questions/13557/…
Banjer
1
En savoir plus sur l'historique du bug: bugzilla.redhat.com/show_bug.cgi?id=785931
Deer Hunter

Réponses:

1

J'ai rencontré ce problème exact avec NFS. Le problème dans mon cas était dû au fait qu'actimeo était réglé trop bas. Bien que vous n'utilisiez peut-être pas ce paramètre exact, il existe toute une famille de paramètres qui peuvent causer des ravages: acregmin, acregmax, acdirmin et acdirmax. Ce qui se passe essentiellement, c'est que le système met en cache les attributs de fichier à partir du NFS. Ces paramètres affectent la durée de conservation des attributs de fichier avant l'actualisation à partir de NFS. Sur un système à forte utilisation, ces rafraîchissements deviennent douloureusement évidents.

Un autre paramètre problématique est noac . Si vous l'utilisez, vous garantissez que toutes les écritures seront immédiatement disponibles pour tous les autres clients. Cependant, les écritures attendent la fin de l'écriture sur la télécommande plutôt que l'utilisation de l'écriture différée. Cela peut mettre un système à genoux s'il écrit fréquemment dans NFS.

Ceci est un article de blog intéressant où ils parlent des différentes options et de leur effet sur les performances NFS. Vous pouvez aussi regarder à l' homme page pour NFS pour plus de conseils. Malheureusement, l'authrefrsh peut être un peu un hareng rouge et mon problème peut être totalement indépendant, mais avec des symptômes similaires.

Foosh
la source
iirc noac ne concerne que la mise en cache des informations d'identification, les écritures sur les métadonnées d'autorisation sont donc immédiates, pas d'écritures. N'a pas été modifié car je ne suis pas sûr maintenant.
Florian Heigl
je ne vois qu'un problème de performances lié à noac, donc c'est une chose en fait, si vous travaillez avec des serveurs NFS non d'entreprise.
Florian Heigl