The default values of the Digital UNIX system kernel parameters such as
max-proc-per-user
and particularly
max-threads-per-user
may be rather low for a medium or
large PMDF system. Note that PMDF jobs processing messages (running
under the Job Controller) will normally all be running under
pmdf
account. Also note that PMDF includes many
multithreaded components, such as the PMDF SMTP client, as well as the
Dispatcher and servers running under it such as the SMTP, POP3, and
IMAP servers. Thus you will want to allow enough processes per user,
and enough threads per user, so that the pmdf
account can
execute the expected maximum number of PMDF processes and threads.
To determine the maximum number of threads that will be needed by PMDF,
you will need to add up the number potentially used by the Job
Controller plus the number potentially used by the Dispatcher services:
Total_threads = J_threads + D_threads
For the Job Controller,
compute the number of queues that run outbound TCP/IP channel jobs
times the JOB_LIMIT for each such queue times the MAX_CLIENT_THREADS
channel option, plus the JOB_LIMIT for each other queue (that is, those
running single threaded jobs), plus the sum of all the Job Controller's
JOB_LIMIT values (as one thread is used by the Job Controller per job
as overhead), plus a few more threads for general Job Controller
management overhead:
Jthreads = Sumnon-TCP/IP queues (JOB_LIMIT+1) +
SumTCP-IP queues (JOB_LIMIT*MAX_CLIENT_THREADS + 1) + a few
For the Dispatcher services, compute
Dthreads = 3 + Sumservices (2+NUM_PORTS +
MAX_PROCS*(3+MAX_CONNS)) where ports = number of ports that the service
listens on.
The current values of your system kernel parameters may be viewed via the command:
# sysconfigdb -lor
# sysconfig -q proc
If the current values are not high enough for the sort of PMDF load you expect, you should increase the values using the sysconfigdb utility and then reboot your system so that the increases take effect.
When permitting a large number of parallel incoming connections---that is when the sum over all services of MAX_PROCS*MAX_CONNS is high---it may be necessary to increase the somaxconn and sominconn socket parameters. These control the maximum number number of pending connection attempts per server socket (the maximum depth of the listen() and SYN queues).
The system's heap size (datasize) must be enough to accomodate the Dispatcher's thread stack usage. For each Dispatcher service compute STACKSIZE*MAX_CONNS, and then add up the values computed for each service. The system's heap size needs to be at least twice this number.
To display the heap size (i.e., default datasize), use the csh command
# limitor the ksh command
# ulimit -aor the utility
# sysconfig -q proc