A big problem is this code in SocketManager
| // TODO: Check the validity of this config
| pool = new PooledExecutor(5);
| pool.setMinimumPoolSize(1);
| pool.setKeepAliveTime(1000 * 60);
| pool.runWhenBlocked();
| String id = "SocketManager.MsgPool@"+
| Integer.toHexString(System.identityHashCode(this))
| + " client=" + ipAddress;
| pool.setThreadFactory(new UILThreadFactory(id));
|
This causes a thread-death every minute per connection and side. On our system we see
around 5000 new threads every hour just because of that! And we can not change it, because
it's hardcoded. This pool config makes the use of a thread pool absurd in terms of
resource consumption.
Actually having this extra pool is a bit of an overkill in the first place, I think. It
should be enough to have the Read task execute the message synchronously in general. On
the server side this is an inject into a queue I guess, which is fast. On the client side
this is passing the message to an MDB thread (or is it just passed to an instance? - I
haven't checked), which is fast as well.
If this pooled is created, it should be fully configurable.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4059223#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...