I am using JMS in JBoss3.0, with MDB's. The speed of receiving messages is too low when the number of messages increases, (for example when I send 2000 msg/second) What can be done to increase the performance? Is using JBoss 3.0 appropriate when I have a large number of messages?
I tried using multiple queues each fed by a seperate thread, but the performance did not change.
Try increasing the pool size.
As you increase your message/sec, is the bottleneck your poolsize, your CPU, your memory, or your network connection?
If it is your poolsize, evidenced by the fact that your CPU is not pinned, everything is working fine, you just don't have enough time to process 2000 msgs/sec, then increase your poolsize, as Senthil suggested.
If it is your CPU, you may want to think about distributing your JMS, moving it to another server.
If it is your memory, you might want to think about running your MDBs on another process, either in your current server or on another. If on windows and the default versions of linux, your max memory per proc is 1.6 gigs. If you are over that, it might be better to run your MDB on another proc, especially if your physical memory and CPU can handle it.
Depending on your configuration, sending a message to the queues will result in DB calls, potentially swamping your network. I rarely see this, and don't know of any good solutions other than redoing your physical configuration. I'm sure other people can comment on this.
I think you may need to increase number of threads in order to activate pooled MDBs efficiently.
Or Tuning Garbage Collection may maximize the performance.
I'm not sure what is the bottleneck.
You should take several thread dumps to decide what causes poor performance.
And -verbose:gc will show you how long each GC costs.
I believe "Samurai" will help you much.