[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: 1024 fd limit ?
Luc Saillard a écrit :
> If you look in the openldap source, you will find that openldap look for some
> value (OPEN_MAX).
> localhost:/home/luc/srcs/openldap/openldap-2.0.7>grep OPEN_MAX -r .
> clients/finger/main.c: tblsize = sysconf( _SC_OPEN_MAX );
> clients/gopher/go500.c: dtblsize = sysconf( _SC_OPEN_MAX );
> clients/gopher/go500gw.c: dtblsize = sysconf( _SC_OPEN_MAX );
> libraries/libldap/os-ip.c: tblsize = sysconf( _SC_OPEN_MAX );
> libraries/libldap_r/os-ip.c: tblsize = sysconf( _SC_OPEN_MAX );
> libraries/liblutil/detach.c: nbits = sysconf( _SC_OPEN_MAX );
> servers/slapd/daemon.c: dtblsize = sysconf( _SC_OPEN_MAX );
>
> So perhaps, you need to modify the file limit.h in the kernel source and change
> this line
>
> #define OPEN_MAX 256 /* # open files a process may have */
On Unix, limits for system resources (cputime, filesize, datasize,
stacksize, coredumpsize, memoryuse, descriptors, memorylocked, maxproc,
openfiles) are generally not hard coded for all processes, you can
change this at runtime and per process.
Take a look at the man page for 'sysconf' and you get: SYNOPSIS: long
sysconf (int name);
So the parameter for sysconf (i.e. _SC_OPEN_MAX in our case) is not the
actual value but the reference to this value.
To change the limits system ressources you need to use the shell command
'ulimit' in sh/bash (or 'limit' for csh/tcsh).
exemple:
'ulimit -n' to get the current limit and 'ulimit -n 2048', 'ulimit -n
unlimited' or 'ulimit -nH' (max value) to set the limit
If you use tcsh, the command is more simple to understand:
'limit' and you get on Linux 2.2.17 i686:
cputime unlimited
filesize unlimited
datasize unlimited
stacksize 8192 kbytes
coredumpsize unlimited
memoryuse unlimited
descriptors 1024
memorylocked unlimited
maxproc 256
openfiles 1024
Now, depending on the OS, a limit can have a max value (that may be
configured in the kernel).
You may also have reach the limit handled by the select systemcall
(__FD_SETSIZE). In any case you should never change the include files..
If you are using Linux 2.2, you may need to patch your kernel to go
beyond 1024 (using Alan Cox's patches)..