Environment
Novell Modular Authentication Service (NMAS) version 2.3
Situation
NMAS 2.x creates a thread for every NMAS request. That
thread services the request and is destroyed. On heavily used
servers this can cause a performance bottleneck as the OS struggles
to provide a sufficient quantity of threads to NMAS. If the
OS isn't able to keep up the server could experience sluggish
performance or the NMAS request could fail with the following error
in the NMAS trace:
23:11:20 B16E6BB0 -1 NMAS: 14:
ERROR: 12 NMAS_ThreadCreate failed.
23:11:20 B16E6BB0 -1 NMAS: 14: ERROR: 12 Server thread failed to start.
23:11:20 B16E6BB0 -1 NMAS: 14: NMAS_CanDo StartClientSession 12
23:11:20 B16E6BB0 -1 NMAS: 14: ERROR: 12 Server thread failed to start.
23:11:20 B16E6BB0 -1 NMAS: 14: NMAS_CanDo StartClientSession 12
Resolution
In NMAS 3.x and later NMAS manages its own thread pool.
Instead of going to the OS to create a thread on every request a
pool is built when NMAS is loaded and these threads are reused
instead of being destroyed and recreated. This reduces thread
utilization on the OS, improves performance and mitigates thread
create issues.