Maximum Client Connections to License Server

As already discussed, the license server consists of a license server manager (either lmgrd or lmadmin) and the vendor daemon. The license server manager is the gateway to the vendor daemon—it hands off client connections to the vendor daemon. The license server manager therefore has a smaller connection limit than the vendor daemon. lmgrd has a default simultaneous connection limit of approximately 1000 clients, which can be limited with the LM_SERVER_HIGHEST_FD environment variable.

The vendor daemon has a maximum connection limit approaching 30,000 jobs, although the best practice is to limit total connections to no more than 10,000 jobs in order to ensure sufficient license server performance. However, when using simple license models and powerful hardware for the license server, more than 10,000 jobs can be considered provided this is stress-tested by producers in advance.

For Linux and Unix systems, the ulimit for file descriptors should be set to be at least as large as the maximum number of job connections expected for the vendor daemon. For example, on Linux VMs, the ulimit for file descriptors is typically 1024, so this will need to be adjusted up, possibly as part of a license server startup script, or systemd or launchd configuration.

A typical client connection error when the maximum number of jobs to the vendor daemon has occurred is LM_CANTCONNECT (-15), and the debug log may contain this entry: “This license server system can handle no more concurrent clients since it is out of file descriptors”.

When the number of simultaneous client connections to lmgrd exceeds the limit (which is an indication that lmgrd is being overwhelmed with a spike of client connection requests), the client error is typically LM_CANTREAD (-16) and the debug log of the license server may contain this entry: “Warning: Maximum connections to the server has reached. Please disconnect some clients from the server”. Another indicator that lmgrd is being overwhelmed is a buildup of sockets in the ESTABLISHED and CLOSED_WAIT states on the license server—when client activity decreases, these socket states fall away as lmgrd stabilizes.