Startup check: HTTP MaxThreads configuration
Platform Notice: Data Center Only - This article only applies to Atlassian apps on the Data Center platform.
Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Summary
This check confirms that the size of your HTTP thread pool (MaxThreads) is not greater than your database connection pool. For example if MaxThreads is set to 48, your database connection pool should allow 60 connections. As a general rule you should allow either 10 additional database connections or 25% more database connections (whichever is the greater), for debugging or administrative purposes.
What this startup warning means
Tomcat's
MaxThreads(inserver.xml) is the maximum number of concurrent HTTP requests Tomcat will accept.The database connection pool (Hibernate/HikariCP, configured in
confluence.cfg.xml) is the maximum number of concurrent DB connections Confluence can hold open.If MaxThreads > DB pool size, Tomcat may accept requests it can't actually process — they queue waiting for a DB connection and either time out or block the user-facing thread.
Atlassian's rule: DB pool should be ≥ MaxThreads + 10 connections OR ≥ MaxThreads × 1.25, whichever is larger.
Solution
To resolve this issue
To resolve this issue you should either increase your database connection pool, or decrease your HTTP thread pool. The option you choose will depend on your environment (for example your database may not be be able to support an increased number of connections).
Change the size of the database connection pool
If you're using a JDBC connection (this is the most common configuration) you will need to:
Stop Confluence (if Confluence is running).
Edit
<home-directory>/confluence.cfg.xmland change the value ofhibernate.c3p0.max_size and hibernate.hikari.maximumPoolSize (if present).Restart Confluence.
If you're using a datasource connection, you'll make this change in your datasource:
Stop Confluence (if Confluence is running).
Edit
<install-directory>/conf/server.xmland change the value of maxTotal.Restart Confluence.
To find out more about configuring your database connection pool in a datasource see the JNDI Datasource HOW-TO in the Apache documentation.
Change the size of the HTTP thread pool
To change the HTTP thread pool (MaxThreads):
Stop Confluence (if Confluence is running).
Edit
<install-directory>/conf/server.xmland change the value of maxThreads.Restart Confluence.
If you have multiple connectors configured, you will need to change the value of maxThreads in each one. If you've used Executor to configure a thread pool that is shared by multiple connectors, you will need to change the value of maxThreads in the thread pool, otherwise this check will continue to fail.
Verification after making changes
After updating server.xml MaxThreads or the DB pool size:
Restart Confluence and confirm the startup check no longer logs the warning.
Monitor JMX MBean
Catalina:type=ThreadPoolattributecurrentThreadsBusyunder representative load — should peak below MaxThreads.Monitor HikariCP MBean
com.zaxxer.hikari:type=PoolattributeActiveConnections— should peak below the pool max.If either is consistently saturated, you may need to increase BOTH together (always preserving the 25% headroom).
What will happen if I dismiss this warning?
Confluence may slow down or time out during periods of heavy load because the number of connections configured for the database connection pool is too small to handle the number of requests. See Confluence slows and times out during periods of high load due to database connection pool for more information.
When this warning can be safely ignored
The startup check is a heuristic — there are valid configurations where you may safely ignore the warning:
You have an external connection pooler (PgBouncer, ProxySQL) between Confluence and the DB; the pool size you set in Confluence is per-pooler-instance, not the actual DB capacity.
You're running a reverse proxy (NGINX, F5) that rate-limits incoming requests before they reach Tomcat — actual concurrent Tomcat requests will be lower than MaxThreads.
Your workload has very short DB transactions and high HTTP-call latency (e.g. heavy use of external REST integrations) — DB pool turnover is fast enough that lower-than-MaxThreads DB pool sizing is fine.
Known issues
There's a known issue where this warning is displayed incorrectly if you have configured Tomcat to use the Http11Nio2Protocol. If you've checked that the size of your thread pool and database connection pool are adequate, you can ignore this warning. See CONFSERVER-58739 - Configuring the Tomcat connector with a protocol different from NIO might cause a false warning about maximum HTTP thread size for more information.
A similar issue as above may occur if you are running Confluence 7.12.2 or earlier and have more than one Tomcat connector configured in the server.xml file. Check CONFSERVER-58097 - Adding a second connector to server.xml will result in a false positive missing maxThreads warning in logs for additional details on this bug.
Related articles
Was this helpful?