Hi,
We noticed that the UIL2 architecture (SocketManager) uses many threads:
- 2 (read/write) per connection on the server side
- 2 (read/write) per connection on the client side
So if you have like 20 (EJB3) MDBs with a pool size of each 10 each, then UIL2 will create
20 * 10 * 4 = 400 threads that do mostly sleep and perform only ping/pong every minute or
so.
Threads cost memory and constitute a scheduling problem. The current design limits the
amount of MDBs in one JVM (or in extreme cases on one machine) unnecessarily.
Have the JBoss team ever thought about reducing this massive waste of resources? Maybe
with NIO selectors und NIO buffers Threads could be shared among connections. Likewise the
MQ destinations could provide selectors instead of blocking calls to pop a message from
the stack. I think it makes sense to have one thread per MDB on each client and server
side, handling all of the connections. It should be possible to do this without giving up
the non-blocking behaviour.
Ortwin
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4054291#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...