Bug 62395 - After applying 7.0.88 the minSpareThreads setting does not appear to be implemented
Summary: After applying 7.0.88 the minSpareThreads setting does not appear to be imple...
Status: RESOLVED FIXED
Alias: None
Product: Tomcat 7
Classification: Unclassified
Component: Connectors (show other bugs)
Version: 7.0.88
Hardware: Other AIX
: P2 normal (vote)
Target Milestone: ---
Assignee: Tomcat Developers Mailing List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-05-21 13:27 UTC by Kim Walsh
Modified: 2018-05-22 09:18 UTC (History)
0 users



Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Kim Walsh 2018-05-21 13:27:56 UTC
I've upgraded tomcat from 7.0.82 to 7.0.88.

At 7.0.82 the number of spare threads was set in minSpareThreads was honoured at startup , since applying 7.0.88 the spare threads has dropped significantly.

example at v 7.0.82

======> Thu 17 May 08:59:00 2018: jazzy01 33226826 thread count: busy: 158 total: 213 max: 350 warnings: 
======> Thu 17 May 09:03:54 2018: jazzy01 591054 thread count: busy: 163 total: 212 max: 350 warnings: 
======> Thu 17 May 09:08:55 2018: jazzy01 591056 thread count: busy: 140 total: 212 max: 350 warnings: 
======> Thu 17 May 09:13:57 2018: jazzy01 30081566 thread count: busy: 170 total: 212 max: 350 warnings: 
======> Thu 17 May 09:19:04 2018: jazzy01 34538148 thread count: busy: 188 total: 212 max: 350 warnings: 
======> Thu 17 May 09:24:05 2018: jazzy01 34734212 thread count: busy: 181 total: 212 max: 350 warnings: 
======> Thu 17 May 09:29:11 2018: jazzy01 36766128 thread count: busy: 163 total: 212 max: 350 warnings: 
======> Thu 17 May 09:34:10 2018: jazzy01 8520632 thread count: busy: 150 total: 212 max: 350 warnings: 
======> Thu 17 May 09:39:16 2018: jazzy01 46137398 thread count: busy: 156 total: 206 max: 350 warnings: 
======> Thu 17 May 09:44:27 2018: jazzy01 38142386 thread count: busy: 176 total: 204 max: 350 warnings: 
======> Thu 17 May 09:49:25 2018: jazzy01 27198260 thread count: busy: 185 total: 217 max: 350 warnings: 
======> Thu 17 May 09:54:11 2018: jazzy01 50856432 thread count: busy: 181 total: 217 max: 350 warnings: 
======> Thu 17 May 09:59:14 2018: jazzy01 23135032 thread count: busy: 205 total: 217 max: 350 warnings: 


the same log at 7.0.88

======> Mon 21 May 08:58:54 2018: jazzy01 656636 thread count: busy: 39 total: 51 max: 350 warnings: 
======> Mon 21 May 09:03:33 2018: jazzy01 36635102 thread count: busy: 40 total: 43 max: 350 warnings: 
======> Mon 21 May 09:08:32 2018: jazzy01 57410200 thread count: busy: 41 total: 52 max: 350 warnings: 
======> Mon 21 May 09:13:31 2018: jazzy01 34799714 thread count: busy: 54 total: 61 max: 350 warnings: 
======> Mon 21 May 09:18:25 2018: jazzy01 57410220 thread count: busy: 58 total: 63 max: 350 warnings: 
======> Mon 21 May 09:23:29 2018: jazzy01 36635076 thread count: busy: 45 total: 70 max: 350 warnings: 
======> Mon 21 May 09:28:38 2018: jazzy01 60883512 thread count: busy: 48 total: 52 max: 350 warnings: 
======> Mon 21 May 09:33:39 2018: jazzy01 656612 thread count: busy: 35 total: 50 max: 350 warnings: 
======> Mon 21 May 09:38:38 2018: jazzy01 19857974 thread count: busy: 36 total: 45 max: 350 warnings: 
======> Mon 21 May 09:43:39 2018: jazzy01 19857992 thread count: busy: 42 total: 51 max: 350 warnings: 
======> Mon 21 May 09:48:50 2018: jazzy01 54329992 thread count: busy: 36 total: 45 max: 350 warnings: 
======> Mon 21 May 09:53:38 2018: jazzy01 27657132 thread count: busy: 39 total: 45 max: 350 warnings: 
======> Mon 21 May 09:58:41 2018: jazzy01 27984682 thread count: busy: 38 total: 44 max: 350 warnings:


In both cases I am passing the following:
-Dtomcat.connector.maxThreads=350 -Dtomcat.connector.minThreads=35

Tomcat in this instance is being used as the web server for a Jazz RTC instance,  no changes to the RTC environment were made.

tomcat version 7.0.88
OS = AIX v7.1
Java =
    java version "1.6.0"
    Java(TM) SE Runtime Environment (build pap6460sr16fp60-20180213_02(SR16 FP60))
    IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 AIX ppc64-64 jvmap6460sr16fp60-20180125_377078 (JIT enabled, AOT enabled)
    J9VM - 20180125_377078
    JIT  - r9_20180125_377078
    GC   - GA24_Java6_SR16_20180125_1132_B377078)
    JCL  - 20180209_01
I think we're using the coyote connector,  I see this in the logs:
20-May-2018 06:37:20 org.apache.coyote.AbstractProtocol init
Comment 1 Mark Thomas 2018-05-21 15:45:45 UTC
I think this is a documentation issue. The meaning on minSpareThreads probably isn't what a reader of the documentation would think it is.

minSpareThreads sets the minimum number of threads that will be kept in the pool, regardless of how busy it is. It is not the minimum number of idle threads that will be maintained by the pool.

The meaning of this attribute has changed over time. Back in the 4.1.x era, it did mean the number of idle threads maintained in the pool. It looks like the docs haven't kept up.

Changing the name of the attribute is an option, but that will create migration issues. I'm leaning towards better docs.
Comment 2 Kim Walsh 2018-05-21 15:58:24 UTC
Hi Mark,

So do you have any idea why in the jump from 7.0.82 to 7.0.88 the total available threads has dropped so significantly?

Thanks
Kim
Comment 3 Mark Thomas 2018-05-21 19:11:52 UTC
Docs updated  in:
- trunk for 9.0.9 onwards
- 8.5.x for 8.5.32 onwards
- 8.0.x for 8.0.53 onwards
- 7.0.x for 7.0.89 onwards

Regarding the specific numbers, there are lots of possible explanations. The users list is the place to explore those.
Comment 4 Kim Walsh 2018-05-22 09:18:43 UTC
Hi Mark,

I'm not sure how the users list works - is there a page that gives me information?

This is clearly a change in behaviour - could it be that threads are returned to the pool much quicker than they used to be?