Qt License Server configuration
Define the Qt License Server configuration values in the configuration file (Linux: qt-license-server.service, Windows: qt-service.xml).
Note: Any change in the configuration file requires a server restart to take effect.
The table below summarizes the available configuration options.
| Option | Default | Possible values | Description |
|---|---|---|---|
QLS_OPERATION_MODE | online | online, offline | Set the operation mode for the Qt License Server instance. With online (On-Prem Qt License Server), Qt License Server syncs licenses automatically from the Qt cloud; an internet connection is required. With offline (Offline Qt License Server), Qt License Server reads licenses from a local entitlement file instead. For more information, see Configure On-Prem Qt License Server or Configure Offline Qt License Server. |
QLS_PORT | 8080 | [port number] | The port on which Qt License Server runs. |
QLS_ENABLE_SSL | yes | yes, no | Enable SSL certificates to encrypt sensitive information sent across the intranet (you need cert.pem and key.pem files). For more information, see Set up SSL certificates. |
QLS_ACCESS_CONTROL | no | yes, no | Enable or disable access control list usage. For more information, see Qt License Server ACL file format. |
QLS_LONGTERM_USAGE | no | yes, no | Allow user to make long-term reservation for a license. |
QLS_IP_RATE_LIMIT_VALUE | unlimited | [limit value] | How many requests from a single IP address in a 1-second window Qt License Server allows. |
QLS_AUTO_DATA_OFFLOAD | no | yes, no | Enable the automatic data offload. |
QLS_DATA_OFFLOAD_INTERVAL | None | daily, weekly, monthly | How often to perform the automatic data offload. Required if automatic data offload is enabled. |
QLS_DATA_OFFLOAD_START_HOUR | None | 00 - 24 | When to start the automatic data offload. Required if automatic data offload is enabled. |
QLS_DATA_OFFLOAD_FILE_PATH | None | [an absolute path] | Where to store the data offload. Has to be an absolute path. Required if automatic data offload is enabled. |
QLS_USER_IDENTITY | user_id | user_id, email | The type of user identity Qt License Server considers. |
QLS_LOG_LEVEL | info | From least verbose to most:
| The level of internal logging from the Qt License Server that the customer wants to see in the log files. Note: To set the log level to |
QLS_SYSTEM_LOG_PATH | A logs folder next to the qt-license-server executable | [an absolute path] | Where to store the server system logs. Has to be an absolute path. |
QLS_SYSTEM_LOG_FILE_SIZE | 20 | [file size] | The maximum size of the log file in megabytes (MB). If the file size reaches the defined value, Qt License Server creates another file. |
QLS_MAX_QUEUE_SIZE | 3000 | 1 - 100000 | The maximum queue size for incoming requests when Qt License Server is busy processing ongoing requests. This also caps how many clients can wait for a free license seat at the same time, and each one holds a connection while it waits. For more information, see Waiting for a free license seat. |
QLS_PROXY_IDLE_TIMEOUT | None | [seconds] | The idle timeout of the reverse proxy, load balancer, or NAT in front of Qt License Server, if there is one. From this value Qt License Server derives how long it holds a waiting client's connection, so no other connection setting has to be changed. For more information, see Waiting for a free license seat. |
QLS_SEAT_WAIT_WINDOW | 0 | 0, or 30 - 2260509 | How long Qt License Server holds one connection while a client waits for a free license seat. The default 0 holds the connection until a seat frees. Values between 1 and 30 are raised to 30, and larger values than the maximum are lowered to it. Set this only to override the value derived from QLS_PROXY_IDLE_TIMEOUT. For more information, see Waiting for a free license seat. |
QLS_WAIT_FREE_SEAT_TIME | 0 | 0, or 30 - 2260509 | [DEPRECATED] The former name of QLS_SEAT_WAIT_WINDOW. Qt License Server still honors it and logs a warning at start-up. It will be removed in a future release. |
QLS_PRIOR_TO_LEASE_RENEWAL_TIME | 0 | [an integer] | The lease renewal interval prior to expiry time in seconds. This is applicable only for site-licenses and if requested from Qt. For more information, see Set the lease prior to expiry time for On-Prem Qt License Server or Offline Qt License Server. |
QLS_EVENTS_EMAIL_NOTIFICATION | no | yes, no | Enable email notifications. For more information, see Enable email notifications. |
QLS_DB_CLEANUP_START_HOUR | 02 | 00 - 24 | When to start the daily Qt License Server cleanup. This maintains database health and removes unnecessary data. |
Waiting for a free license seat
When a client asks for a floating license seat and every seat is taken, Qt License Server does not refuse the request. It keeps the client waiting, and hands it the next seat that another client releases. Clients are served oldest first.
By default Qt License Server holds the client's connection open for as long as this takes. The client waits quietly and never has to reconnect, which keeps the load on the server low even when thousands of clients are waiting at once.
Servers behind a reverse proxy
A reverse proxy, load balancer, or NAT device between the clients and Qt License Server closes connections that have been idle for too long. A connection held open while waiting for a seat looks idle to such a device, so the device closes it and the client reports a network error instead of waiting.
Set QLS_PROXY_IDLE_TIMEOUT to the idle timeout of that device:
Environment="QLS_PROXY_IDLE_TIMEOUT=75"Use 75 for a default nginx configuration and 60 for a default AWS Application Load Balancer. Qt License Server then lets go of a waiting connection before the device does, and tells the client to reconnect and keep waiting. The client keeps its place in the queue, so waiting longer than one such window costs it nothing.
The shortest window Qt License Server uses is 30 seconds. If the device closes idle connections faster than that, Qt License Server logs a warning at start-up: raise the device's idle timeout.
To set the holding time yourself instead, use QLS_SEAT_WAIT_WINDOW. It overrides the derived value, and Qt License Server warns at start-up if it reaches the declared idle timeout.
If Qt License Server is holding connections indefinitely and sees the headers a proxy usually adds, it writes a warning to the log.
Note: QLS_SEAT_WAIT_WINDOW limits how long one connection is held, not how long a client waits in total. A client that keeps reconnecting waits indefinitely. Setting it to 0 holds the connection until a seat frees; it does not mean "do not wait".
A client that can use seats from several full pools waits on one pool at a time, so it always gets a window of up to 60 seconds, even when the window is switched off. Only a reconnect lets it see a seat free on one of the other pools.
Host settings for many waiting clients
Every client waiting for a seat holds one connection, and therefore one file descriptor, for as long as it waits. Before raising QLS_MAX_QUEUE_SIZE, raise the host limits to match:
- The open file limit (
ulimit -n) must be aboveQLS_MAX_QUEUE_SIZE. Qt License Server cannot accept a connection once the limit is reached, and the queue size does not protect against that. net.core.somaxconnbounds how many connections the operating system accepts at once. A large burst of clients starting together overruns a low value, and those clients see connection failures.net.ipv4.tcp_keepalive_intvlandnet.ipv4.tcp_keepalive_probesdecide how quickly Qt License Server reclaims the connection of a client whose host disappeared without closing it, for example after a power loss. With the Linux defaults this takes about 12 minutes, and until then that client still counts againstQLS_MAX_QUEUE_SIZE. Lower them if clients are lost this way often.
See also Configure On-Prem Qt License Server and Configure Offline Qt License Server.
© 2024 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.