Increasing the number of file descriptors available to an application
File descriptors are used for more than just open files, they also provide the framework for socket i/o. The kernel dynamically allocates resources for open files. There is no maximum number of file descriptors per system.
Depending on the programming interface used, an application may not be able to reach the file descriptor limit.
API limits (ref:Solaris Internals)
- stdio(3S) - 256
From stdio(3S); no more than 255 files may be opened using fopen(), and only file descriptors 0 through 255 can be used in a stream.
- select(3c) - 1024
From select(3c); The default value for FD_SETSIZE (currently 1024) is larger than the default limit on the number of open files. It is not possible to increase the size of the fd_set data type when used with select().
Solaris 7, 8, 9 and 10
- stdio(3s) - 256 (32-bit) / 65536 (64-bit)
- select(3c) - 1024 (32-bit) / 65536 (64-bit)
65536 limit is attainable on 32-bit Solaris 7
#define FD_SETSIZE 65536 ; prior to includes
- Solaris 2.6 / 7
- Solaris 8
- Solaris 9 / 10
- set rlim_fd_max=8192 ; hard limit (per process)
- set rlim_fd_cur=1024 ; soft limit (per process)