There is no limit for NFS or UDP in general, though memory, open channel limits, or other system resources could effect the number of connections the NFS server can service.
Server acting 'catatonic' - can't start NFS_SERVERIO processes
If the NFS server can not service creates or writes it could be because it can not start an NFS_SERVERIO
process. If a SHOW SYSTEM shows the NFS_SERVER
process but no NFS_SERVERIO_X
process(es) this is a good indication that the PRCLM
(process limit) of the NFS_SERVER
is 0
. This can be verified by running quota.com
(included below) on the NFS_SERVER
process and looking for PRCLM
. It should be 5 or better.
VEGA> mu config/serv [Reading in configuration from MULTINET:SERVICES.MASTER_SERVER] SERVER-CONFIG>select nfs [The Selected SERVER entry is now NFS] SERVER-CONFIG> [PQL PRCLM of NFS set to 5] SERVER-CONFIG>exit
The following commands show how to set the PRCLM
of the NFS_SERVER
process:
[quota.com] $! quota.com $! Usage: @QUOTA pid-of-process-to-check $! $ if p1 .eqs. "" $ then $ Inquire PID $ else $ PID = P1 $ Endif $ astcnt = f$getjpi(pid, "astcnt") $ astlm = f$getjpi(pid, "astlm") $ bytcnt = f$getjpi(pid, "bytcnt") $ bytlm = f$getjpi(pid, "bytlm") $ pgflquota = f$getjpi(pid, "pgflquota") $ pagfilcnt = f$getjpi(pid, "pagfilcnt") $ filcnt = f$getjpi(pid, "filcnt") $ fillm = f$getjpi(pid, "fillm") $ enqcnt = f$getjpi(pid, "enqcnt") $ enqlm = f$getjpi(pid, "enqlm") $ biocnt = f$getjpi(pid, "biocnt") $ biolm = f$getjpi(pid, "biolm") $ diocnt = f$getjpi(pid, "diocnt") $ diolm = f$getjpi(pid, "diolm") $ tqcnt = f$getjpi(pid, "tqcnt") $ tqlm = f$getjpi(pid, "tqlm") $ prclm = f$getjpi(pid, "prclm") $ write sys$output "ASTLM: ''ASTLM', remaining: ''ASTCNT'" $ write sys$output "BYTLM: ''BYTLM', remaining: ''BYTCNT'" $ write sys$output "PGFLQUOTA: ''PGFLQUOTA', remaining: ''PAGFILCNT'" $ write sys$output "FILLM: ''fillm', remaining: ''FILCNT'" $ write sys$output "ENQLM: ''enqlm', remaining: ''enqcnt'" $ write sys$output "BIOLM: ''biolm', remaining: ''biocnt'" $ write sys$output "DIOLM: ''diolm', remaining: ''diocnt'" $ write sys$output "TQLM: ''tqlm', remaining: ''tqcnt'" $ write sys$output "PRCLM: ''prclm'"
A reboot is required after doing this if the server is running in kernel mode. If the server is running in user mode, you can stop the process and restart the master server.
What Are the Symptoms?
The NFS Server will performs poorly if it exhausts its process quotas. You may notice that it spends a lot of CPU time without doing useful work.
How to Check Process Quotas
To check to see whether the NFS Server's process quotas are adequate, pick a time when the server is not behaving as expected, the server is busy, or the server has been up for a long time, and execute the following command procedure:
$! quota.com $! Usage: @QUOTA pid-of-process-to-check $! $ if p1 .eqs. "" $ then $ Inquire PID $ else $ PID = P1 $ Endif $ astcnt = f$getjpi(pid, "astcnt") $ astlm = f$getjpi(pid, "astlm") $ bytcnt = f$getjpi(pid, "bytcnt") $ bytlm = f$getjpi(pid, "bytlm") $ pgflquota = f$getjpi(pid, "pgflquota") $ pagfilcnt = f$getjpi(pid, "pagfilcnt") $ filcnt = f$getjpi(pid, "filcnt") $ fillm = f$getjpi(pid, "fillm") $ enqcnt = f$getjpi(pid, "enqcnt") $ enqlm = f$getjpi(pid, "enqlm") $ biocnt = f$getjpi(pid, "biocnt") $ biolm = f$getjpi(pid, "biolm") $ diocnt = f$getjpi(pid, "diocnt") $ diolm = f$getjpi(pid, "diolm") $ tqcnt = f$getjpi(pid, "tqcnt") $ tqlm = f$getjpi(pid, "tqlm") $ write sys$output "ASTLM: ''ASTLM', remaining: ''ASTCNT'" $ write sys$output "BYTLM: ''BYTLM', remaining: ''BYTCNT'" $ write sys$output "PGFLQUOTA: ''PGFLQUOTA', remaining: ''PAGFILCNT'" $ write sys$output "FILLM: ''fillm', remaining: ''FILCNT'" $ write sys$output "ENQLM: ''enqlm', remaining: ''enqcnt'" $ write sys$output "BIOLM: ''biolm', remaining: ''biocnt'" $ write sys$output "DIOLM: ''diolm', remaining: ''diocnt'" $ write sys$output "TQLM: ''tqlm', remaining: ''tqcnt'"
How to Boost Process Quotas
After you have run the program above, if any remaining quota is exhausted or very small, then boost this quota. For example, if you see the following:
PGFLQUOTA: 60000, remaining: 0
you can boost PGFLQUOTA
to about 100000. (Exhausted FILLM
is another possible source of a problem.)
$ mu conf/serv MultiNet Server Configuration Utility V5.6 [Reading in configuration from MULTINET:SERVICES.MASTER_SERVER] SERVER-CONFIG>sel nfs [The Selected SERVER entry is now NFS] SERVER-CONFIG>set pql-pgflquota 100000 SERVER-CONFIG>exit $ MULTINET NETCONTROL NFS RESTART
If the NFS Server can't restart, you'll have to reboot.
You may also need to boost the SYSGEN CHANNELCNT
parameter. Enter the following:
$ ANALYZE/SYSTEM sda> SET PROCESS NFS_SERVER sda> SHOW PROCESS/CHANNEL
If you see that the number of channels being used is close to the value of CHANNELCNT
, then boost CHANNELCNT
and reboot. Note that CHANNELCNT
should be larger than your FILLM
process quota.
If you need to boost PGFLQUOTA
, first ensure that VIRTUALPAGECNT
is at least as large and make sure there's adequate room in your system pagefiles.
Note: A common cause of NFS Server problems, when the NFS Server is called upon to process LOTS of concurrent requests, is BYTLM
exhaustion. The above QUOTA.COM
check may not show the BYTLM
problem, because the BYTLM
usage can be ephemeral. Therefore, it's suggested that you boost the NFS_SERVER's BYTLM
to at least 300000.