Kbase 18782: Unable To Open File: <file-name>. Errno=24 (98)
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  28/05/2010 |
|
Status: Unverified
SYMPTOM(s):
Cannot find or open file <file-name>, errno = <number>. (43)
Cannot find or open file <file-name>, errno =24. (43)
Unable to open file: <file-name>. Errno=<number>. (98)
Unable to Open File: <filename>. Ernno=24 (98)
FACT(s) (Environment):
OpenEdge Category: Language (4GL/ABL)
Progress 8.x
Progress 9.x
OpenEdge 10.x
Sun Solaris SPARC
Error 24 resolves to "Too many open files"
CAUSE:
Application is attempting to open more files than allowed
FIX:
The following method increases the number of file descriptors per process on Solaris:
In Solaris Version 2.3 and earlier, you must modify the kernel.
In Solaris Version 2.4 and later, the modifications can be accomplished by adding the following lines to /etc/system:
* set hard limit on file descriptors
set rlim_fd_max = 4096
* set soft limit on file descriptors
set rlim_fd_cur = 1024 Raising the soft limit past 256 can confuse certain applications. Raising the limit past 1024 can confuse applications that use select(). Select() cannot use more than 1024 file descriptors in versions earlier than Solaris 7.
In Solaris 2.6, the RPC code was rewritten to use poll(), which works with many more fds than select(). Prior to 2.6, all RPC servers likely crash and burn if you increase the fd soft limit past 1024.
Solaris 7 allows up to 65536 fds to be passed to select. This requires recompilation with a larger value for FD_SETSIZE.
Programs that use stdio or even library calls that use stdio can break when they have more than 256 files open because 256 is the stdio limit. Programs that use many file descriptors should try to reserve a number of low numbered file descriptors for use by stdio.