> Hmm. The default number of files is 128 for daemons, but it's strange you'd > hit that JUST starting up. > > Can you try starting relayd with -v -d to see if it logs anything of > interest? > > Can you binary search ulimits until you find the lowest it will start with? > > Reading the source it looks like socket pairs are created between all the > relayd processes, i.e. n^2 * 2 ish file descriptors, which could exceed 128 > pretty fast. Are you running with a non-default prefork setting?
This was fixed after 6.0. date: 2016/11/24 21:01:18; author: reyk; state: Exp; lines: +110 -79; commitid: FkVuQgzULddApn9S; The new fork+exec mode used too many fds in the parent process on startup, for a short time, so we needed a rlimit hack in relayd.c. Sync the fix from httpd: rzalamena@ has fixed proc.c and I added the proc_flush_imsg() mechanism that makes sure that each fd is immediately closed after forwarding it to a child process instead of queueing it up. OK rzalamena@ jca@ benno@