Comme vous le savez, tous les gros bugs arrivent toujours le vendredi… celui-ci n’as pas dérogé à la règle.
Mise en situation: Un des serveurs mail que j’administre utilise un serveur LDAP distant pour l’authentification, le réseau entre les deux étant très sollicité, j’ai donc tout naturellement installé le service NSCD qui permet de mettre en cache les requêtes des services de noms les plus courants. Ce setup a fonctionné à merveille pendant un an…
Ce matin, j’ai eu des remontés de panne d’utilisateurs qui essuyaient des échecs (« Auth failed ») lors du relevé quotidien de leurs mail, alors que d’autres n’avaient aucun problème. On pouvait noter cet erreur dans les logs:
1 | could not identify user (from getpwnam NSCD($user)) |
Après moultes recherches, infructueuses.. (n’oublions pas qu’il sagit de la panne chiante embêtante du vendredi) .. je me rends compte du fait que le service de cache nscd est au tas (et que bien évidemment je n’avais reçu aucune alerte. Vendredi, tout ça…)
Démarrage en mode debug du daemon:
1 2 3 | # nscd -d ... nscd: cache.c:384: prune_cache: Assertion 'dh->usable' failed. |
Invalidons le cache:
1 2 3 | # nscd -i hosts # nscd -i passwd # nscd -i group |
Le service s’écroule au bout de 30s de travail… Passons aux choses sérieuses brutales.
1 2 | # rm -f /var/cache/nscd/* # /etc/init.d/nscd start |
Le tour est joué ! Trois heures que les choses ont repris, la chose est stable.
Pour information un bug est ouvert sur le bugtrack et il sagit de la version:
1 2 | # nscd -V nscd (GNU libc) 2.7 |



Je te conseille unscd qui est un parfait clone de nscd, mais sans les bugs. J’ai eu le même problème que toi, à savoir effondrement lamentable au bout de X secondes.
merci !