¿Qué causa la actualización repetida de credenciales RPC del lado del cliente NFS de Linux?

10

Utilizando nfsstat -c, veo un alto "authrefrsh" (conocido como "newcred" en algunos sistemas) que cuenta con mi PC cliente NFS para operaciones como lsy finden directorios que contienen ~ 1000 archivos. Esto se correlaciona con un rendimiento muy pobre (listados de directorio de más de 20 minutos). Las operaciones de NFS en caché no exhiben este comportamiento (el authrefrsh o la desaceleración).

authrefrsh = llama cada vez que reviso 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%

Detalles de conexión:

$ 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

Entorno 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

Medio ambiente:

$ 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
fuente
¿alguna actualización? He notado un peor rendimiento de los clientes nfs con núcleos más nuevos, por ejemplo, SLES 11 SP2 y CentOS 6.4 frente a SLES 9 SP4. La única diferencia que veo en las estadísticas es que authrefrsh es muy alto. Supongo que esto es una sobrecarga adicional que causa una degradación en el rendimiento.
Banjer
No hay actualizaciones, lo siento. Me alejé de NFS para mi aplicación, porque SSH + SCP era una opción. El problema era paralizante :)
Chris Betti
¿estás seguro de que no es un problema nfs v3 vs. v4?
kofemann
Para su información, esta pregunta de Unix SE tiene más pistas sobre este tema: unix.stackexchange.com/questions/13557/…
Banjer
1
Más sobre la historia del error: bugzilla.redhat.com/show_bug.cgi?id=785931
Deer Hunter

Respuestas:

1

Encontré este problema exacto con NFS. El problema en mi caso fue causado por actimeo siendo demasiado bajo. Si bien es posible que no esté utilizando esta configuración exacta, hay toda una familia de configuraciones que pueden causar estragos: acregmin, acregmax, acdirmin y acdirmax. Esencialmente, lo que sucede es que el sistema está almacenando en caché los atributos de archivo del NFS. Esta configuración afecta el tiempo que se mantienen los atributos del archivo antes de actualizar desde NFS. En un sistema con un uso intensivo, estas actualizaciones se vuelven dolorosamente obvias.

Otra configuración problemática es noac . Si usa esto, garantiza que cualquier escritura estará disponible de inmediato para todos los demás clientes. Sin embargo, las escrituras esperarán hasta que termine de escribir en el control remoto en lugar de usar escritura subyacente. Esto puede poner de rodillas a un sistema si escribe frecuentemente en NFS.

Este es un interesante artículo de blog donde hablan sobre las diferentes opciones y su efecto en el rendimiento de NFS. También puede consultar la página de manual de NFS para obtener más orientación. Desafortunadamente, authrefrsh puede ser un poco una pista falsa y mi problema puede no estar relacionado, aunque con síntomas similares.

Foosh
fuente
iirc noac también solo se refiere al almacenamiento en caché de credenciales, por lo que las escrituras a los metadatos de permisos son inmediatas, no "escrituras". No edité ya que no estoy seguro ahora.
Florian Heigl
solo estoy viendo un problema de rendimiento relacionado con noac, por lo que esto es una cosa, de hecho, si trabajo con servidores NFS no empresariales.
Florian Heigl