Date: Sun, 3 Aug 1997 23:58:59 -0700 (PDT) From: "Andrew N. Edmond" <edmond@shaman.lycaeum.org> To: Terry Lambert <terry@lambert.org> Cc: Cliff Addy <fbsdlist@federation.addy.com>, questions@FreeBSD.ORG, hackers@FreeBSD.ORG Subject: Re: Too many open files in System! Message-ID: <Pine.BSF.3.96.970803235437.1586B-100000@necropolis.org> In-Reply-To: <199708032114.OAA02289@phaeton.artisoft.com>
next in thread | previous in thread | raw e-mail | index | archive | help
/* text cut and pasted below */
> To answer your question: you must increase all of these values,
> and if you are using select, #define FD_SETSIZE higher in your
> application before including <sys/types.h>.
Thanks for the great answer Terry, Cliff and ahem... Jordan :-)
In any case, the sysctl settings worked great, messed with login.conf some
as well, and the #define FD_SETSIZE works great.... except with...
mit-pthreads.
mit-pthreads is puking everytime I try to set the FD_SETSIZE (yes, before
<sys/types.h>), and even when I go into the pthreads source and try to
change that version of FD_SETSIZE, it's still puking at a value of 1024.
At 256 it works fine. Any ideas?
Andy
On Sun, 3 Aug 1997, Terry Lambert wrote:
> > > error on accept: Too many open files in system
> > >
> > > I set CHILD_MAX and OPEN_MAX to 4098 in the kernel, and I can't find a way
> > > to get accept to open any more sockets. Any ideas?
> >
> > This seems to be a FAQ (Frequently Asked Question). Unfortunately, it
> > seems to seems to also be a NAQ (Never Answered Question). I myself have
> > asked it several times and the answers, involving CHILD_MAX and OPEN_MAX
> > and limits, never work. Apparently, FreeBSD is too primitive to handle
> > more than a few files at once.
> >
> > (please realize the above is an intentional goad to get SOMEONE to finally
> > answer this. I love FreeBSD :) )
>
>
> There are five limiting factors on the number of open files which
> a process can have:
>
> 1) There is a "soft" limit, which can be seen an raised with
> the csh "limit" command or the sh "ulimit" command. This
> is a soft quota.
>
> 2) There is a "hard soft" limit, which is set at login time
> and may be modified via the login.conf mechanism. This
> limit prevents you from raising the "soft" limit above
> a set maximum.
>
> 3) There is a "hard" limit, which is set at kernel compilation
> time, and limits the number of open files which may be
> placed in the per process open file table.
>
> 4) There is a "hard system" limit, which is set at kernel
> compilation time, and limits the number of files which
> may be placed in the system open file table and referred
> to by all process open file tables for all process
> simultaneously running on the system.
>
> 5) Available kernel memory for the file structures, vnodes,
> in core inodes, process open file table, and file buffers.
>
> It used to be that the only limits were 4 and 5. Unfortunately,
> a number of broken shells, like "bash", open all the files they
> can in order to get the last descriptor they can for use by the
> shell, so that shell scripts can be run without descriptor conflicts
> (the correct way for these shells to operate is to use a reference
> to a descriptor instead of a descriptor, and "dup2" the descriptor
> one higher each time a conflict arises; but these programs are
> written by students).
>
> AIX had similar problems, where "bash" (and other offenders) would
> open tens of thousands of files, until the per process open file
> table for the starting "bash" would consume all available kernel
> memory.
>
> Now there are quotas.
>
>
> #4 is about the only thing that can't be gotten rid of, once you
> get rid of "bash" and similar programs built-in "denial of service"
> attacks. It has to remain, so that it is possible to directly
> reference the system open file table from kmem to allow things like
> identd to operate (identd is needed for anal security configurations
> using firewall software that denies or allows on the basis of
> "user@host" rather than merely "host"). Identd doesn't work
> (or didn't work; it may have been repaired in a new release) on
> AIX because of this.
>
> For #5, you can always buy more RAM.
>
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
\-/ :::::::: Andrew N. Edmond - finger for PGP key :::::::::: \-/
/-\ :::::: ............ :::::: /-\
\-/ ::: edmond@lycaeum.org :::::: an1@anon.nymserver.com ::: \-/
/-\ : Director of the Lycaeum :: the Nymserver Administrator : /-\
\-/ ::: www.lycaeum.org :::::: www.nymserver.com ::: \-/
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.96.970803235437.1586B-100000>
