Tomcat NIO thread pools
Solution 1
http-nio--exec- (usually 10) => This can be controlled by setting "server.tomcat.max-threads=10" in application.properties. If its set to 1, then you see only one thread http-nio--exec-1.
I am too trying to find out other thread pools.
Solution 2
The proper solution with Spring and Tomcat would be to use 2 properties:
server.tomcat.max-threads=200 # Maximum amount of worker threads.
server.tomcat.min-spare-threads=10 # Minimum amount of worker threads
If you change the server.tomcat.max-thread
below the server.tomcat.min-spare-threads
, then you will have as many thread as the max-thread property.
If you change the server.tomcat.min-spare-threads
, then you will have as many thread as specified.
For instance, if you set to this: server.tomcat.min-spare-threads=15
, then you will have 15 http-nio-8080-exec-*
Rag
Updated on June 07, 2022Comments
-
Rag almost 2 years
I understand Java NIO (channels, selector, ..). I would like to understand Tomcat NIO better so that I can configure thread pools of Tomcat appropriately from Spring boot.
Can someone please explain what is the purpose of each thread pool and how do these work in relevance to Java NIO? It would be helpful if you can also point out which thread pool is used during the processing of HTTP requests.
Some Tomcat8 thread pools observed during thread dumps:
http-nio-<port>-Acceptor (usually 1 or 2 threads) http-nio-<port>-ClientPoller-<index> (usually 2) http-nio-<port>-exec-<index> (usually 10) NioBlockingSelector.BlockPoller-<index> (usually 2)
-
gstanley about 5 yearsi think it depends on the version of tomcat used. In tomcat 8 the property is : server.tomcat.maxThreads=.
-
NikolaS over 3 yearsBy saying "If you change the
server.tomcat.max-thread
below theserver.tomcat.min-spare-threads
, then you will have as many thread as the max-thread property." you actually mean values ofmax-thread
andmin-spare-threads
properties to be EQUAL, right? -
RUARO Thibault over 3 yearsNo, I meant below. In this case, you don’t get an error, but the max number of thread is the min spare
-
NikolaS over 3 yearsIn that case, be clear, e.g. if
max-thread=5
andmin-spare-threads=10
how many MAXIMUM threads will be used than in ThreadPool? Will thenmax-thread
value be be min and max number of threads in ThreadPool? Thank you in advance. -
RUARO Thibault over 3 yearsThen you will have 5 threads. Sorry, my last comment is unclear (even wrong...)
-
Piotr P. Karwasz over 2 yearsSpring Boot allows both the camelcase
maxThreads
and the hyphenated versionmax-threads
. This applies to all properties. -
Martin Andersson over 2 yearsDoesn't answer the question at all.