I am having a problem with synchronous messaging performance. I created a test case similar to the RequesterTool.java and ConsumerTool.java wherein I create a request and then block waiting for a response. The response is being waited for using receive() rather than an onMessage() handler; in case that matters. The producer and consumer are running on two separate machines connected via a single switch.
When I configure the above scenario using a single producer (in it's own thread) and a single consumer. I measure about 9.9 request/responses per second. This occurs with virtually no load on either CPU. Also I ran a thread monitoring tool and, if it means anything, I noticed on the producer that most of the time was spent blocked on edu.emory.mathcs.backport.java.util.concurrent.SynchronousQueue$Node When I configure my test case to use two producers each running in it's own thread, with a single consumer. I measure ~490 request/responses per second with about 70% CPU load on each machine. The message broker is running in a separate JVM on the producer machine. I did try setting the URL option wireFormat.tcpNoDelayEnabled to true, but that made no difference in the behavior. Configuration Notes: Producer Machine: Single CPU WIndows 2003 Server, 2.0gb RAM, Java 1.5.0_09-b03 Consumer Machine: Linux Red Hat 4 Enterprise, 1.0gb RAM Java 1.5.0_09-b03 Any suggestions folks have would be greatly appreciated. I made an effort to track down all the synchronous tuning information folks have posted, but I could have missed something. Regards, Michael -- View this message in context: http://www.nabble.com/Synchronous-Messaging-Performance-Question-tf2762926.html#a7703463 Sent from the ActiveMQ - User mailing list archive at Nabble.com.
