MAXFILEPROC

Use MAXFILEPROC to set the maximum number of file descriptors that a single process can have open concurrently, such as all open files, directories, sockets, and pipes. By limiting the number of open files that a process can have, you limit the amount of system resources a single process can use at one time.

You can use the USS_MAXSOCKETS_MAXFILEPROC check provided by IBM® Health Checker for z/OS® to determine whether the MAXFILEPROC value is set too low. For more details about IBM Health Checker for z/OS, see IBM Health Checker for z/OS User's Guide.

When selecting a value, consider these factors:
  • For conformance to standards, set MAXFILEPROC to at least 16 to conform to the POSIX standard or at least 25 to conform to the FIPS standard.

    Guideline: Set this value to 64000.

  • The minimum value of 3 supports stdin, stdout, and stderr.
  • The value must be larger than 3 to support shell users. If the value is too small, the shell might issue the message “File descriptor not available.” If this message occurs, increase the MAXFILEPROC value.

A process can change the MAXFILEPROC value using the setrlimit() function. Only users with appropriate privileges can increase their limits.

You can set a system-wide limit in BPXPRMxx and then set higher limits for individual processes. Use the RACF® ADDUSER or ALTUSER command to specify the FILEPROCMAX limit on a per-process basis as follows:
ALTUSER userid OMVS(FILEPROCMAX(nnnn))

Dynamically changing certain BPXPRMxx parameter values explains how to dynamically change the MAXFILEPROC value.