Hi Reyk,

On Wed, Sep 28, 2016 at 03:29:22PM +0200, Reyk Floeter wrote:
| On Wed, Sep 28, 2016 at 03:00:20PM +0200, Paul de Weerd wrote:
| > Hi,
| > 
| > So, upgrading one of my webservers to -current (snapshot with kernel
| > build #2498: Tue Sep 27 17:53:43 MDT 2016), my httpd suddenly failed
| > to start.  rcctl -d start httpd showed it's about hitting the open
| > file limit, and trying to check the config confirmed that problem:
| > 
| > [root@agony] # httpd -n
| > httpd: proc_open: Too many open files
| > 
| 
| When starting the daemon, the parent opens all the possible pipe fds
| between all the processes and the children close the unneeded ones
| after starting up.  This ramp-up quickly exceeds the default limit of
| 128 fds.  I'm discussing an alternative approach with rzalamena@ that
| will allow us to keep the default rlimit of 128 fds by opening and
| passing them to the children one-after-another.
| 
| The diff below should fix it for now, we have the same in relayd.

Thanks, that does indeed prevent the error:

[weerd@drop] $ doas httpd -n    
httpd: proc_open: Too many open files
[weerd@drop] $ doas /usr/src/usr.sbin/httpd/obj/httpd -n
configuration OK

Cheers,

Paul

| Reyk
| 
| Index: usr.sbin/httpd/httpd.c
| ===================================================================
| RCS file: /cvs/src/usr.sbin/httpd/httpd.c,v
| retrieving revision 1.62
| diff -u -p -u -p -r1.62 httpd.c
| --- usr.sbin/httpd/httpd.c    28 Sep 2016 12:01:04 -0000      1.62
| +++ usr.sbin/httpd/httpd.c    28 Sep 2016 13:22:39 -0000
| @@ -212,6 +212,11 @@ main(int argc, char *argv[])
|                       errx(1, "malloc failed");
|       }
|  
| +     if (proc_id == PROC_PARENT) {
| +             /* XXX the parent opens too many fds in proc_open() */
| +             socket_rlimit(-1);
| +     }
| +
|       /* only the parent returns */
|       proc_init(ps, procs, nitems(procs), argc0, argv, proc_id);
|  

-- 
>++++++++[<++++++++++>-]<+++++++.>+++[<------>-]<.>+++[<+
+++++++++++>-]<.>++[<------------>-]<+.--------------.[-]
                 http://www.weirdnet.nl/                 

Reply via email to