Details
-
Bug
-
Resolution: Duplicate
-
Major
-
None
-
JBossAS-4.0.3RC2
-
None
Description
After a long time of execution, it seems like there are nearly 100 threads created called "Timeouts(1)-xxx" and they mostly sit around. Example dump:
Thread Group: JBoss Pooled Threads : max priority:10, demon:false
Thread: Timeouts(1)-105118 : priority:5, demon:true
Thread: Timeouts(1)-105120 : priority:5, demon:true
Thread: Timeouts(1)-105121 : priority:5, demon:true
Thread: Timeouts(1)-105122 : priority:5, demon:true
Thread: Timeouts(1)-105123 : priority:5, demon:true
Thread: Timeouts(1)-105124 : priority:5, demon:true
Thread: Timeouts(1)-105125 : priority:5, demon:true
...
In JBoss 3.2, and 4.0, src/main/org/jboss/util/threadpool/BasicThreadPool.java creates a pool with a minimum size of 100, which seems a little bit much.
The JavaDoc for PooledExecutor says:
- When given a choice, this pool always prefers adding a new thread
- rather than queueing if there are currently fewer than the
- current getMinimumPoolSize threads running, but otherwise always
- prefers queuing a request rather than adding a new thread. Thus,
- if you use an unbounded buffer, you will never have more than
- getMinimumPoolSize threads running. (Since the default
- minimumPoolSize is one, you will probably want to explicitly
- setMinimumPoolSize.) <p>
*
It seems reasonable, then to pick a small size for the minimum (2-4) and a large one for the maximum size (100).