I've just found that under heavy load ypldap's LDAP engine leaks file descriptors. I'll try to post issues I found one-by-one, and here is the first leak I've found.
This fixes an fd leak happening if aldap_init() returns NULL. Okay? -- WBR, Vadim Zhukov Index: ldapclient.c =================================================================== RCS file: /cvs/src/usr.sbin/ypldap/ldapclient.c,v retrieving revision 1.39 diff -u -p -r1.39 ldapclient.c --- ldapclient.c 30 May 2017 09:33:31 -0000 1.39 +++ ldapclient.c 6 Dec 2017 12:43:57 -0000 @@ -66,7 +66,8 @@ struct aldap * client_aldap_open(struct ypldap_addr_list *addr) { int fd = -1; - struct ypldap_addr *p; + struct ypldap_addr *p; + struct aldap *al; TAILQ_FOREACH(p, addr, next) { char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV]; @@ -90,7 +91,10 @@ client_aldap_open(struct ypldap_addr_lis if (fd == -1) return NULL; - return aldap_init(fd); + al = aldap_init(fd); + if (al == NULL) + close(fd); + return al; } int