Extremely low message throughput with MQ 3.6

We performed some load tests to determine maximum throughput of the Sun JMS framework when used in conditions similar to our application.
The achieved throughput is extremely low: around 10 messages / second while we expected around 100. Could you please verify what may be the reason?
We encountered one particular problem: the time of closing JMS producers increases much during the test. Message throughput decreases proportionally. Time periods of other phases of the JMS API usage remain constant. What can be the reason?
detailed information:
Our configuration used:
server machine:
cpu: Intel Celeron 2.8 Ghz
ram: 1GB
os: CentOS release 4.4 (Final), 2.6.9-42.0.3.EL
application server: Sun Java System Application Server Enterprise Edition 8.1 2005Q2 UR2
java version: 1.5.0_04
we use default imqbroker configuration
client machine:
Intel Celeron 2Ghz
ram: 512MB
os: Fedora Core release 3, 2.6.12-1.1381_FC3
java version: 1.4.02
Test description (find attached test unit sources presenting our way of using JMS API):
Load test is performed by running a number of concurrent test units against the JMS broker. Number of units is constant in time. Additionally, every unit test at the end of its life cycle launches another unit to keep long test time perspective.
Each test unit is self-contained. It contains of a producer and a consumer (MessageListener). It sends messages to itself . Also each message unit sleeps for some time to simulate message processing.
Messages are non-persistent, no durable subscriptions are used. All units are using one shared Queue for whole messaging. Message selectors are utilized to guarantee that messages are delivered to intended receiver.
By this test we wanted to determine a maximum value of message throughput for which all messages are delivered successfully and in some reasonable time (say less than 1 minute).
Some variations of test units are possible, e.g. JMS connections and/or sessions can be open/closed for every sent message or shared among multiple producers. But (contrary to our expectations) we encountered no visible differences in message throughput and message delivery time.
Code of test units:
Sender.java
package pl.ericpol.jmstest;
import javax.jms.Connection;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
public class Sender{
     private UnitTest unitTest = null;
     private Connection connection = null;
     private Session session = null;
     private MessageProducer producer = null;
     private String selector = null;
     public Sender(Connection con, Session session, MessageProducer producer, String selector, UnitTest unitTest){
     public void send() {
          try {
               boolean closeSession = false;
               boolean closeProducer = false;
               if(this.session == null){
                    this.session = this.connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
                    closeSession = true;
               if(this.producer == null){
                    this.producer = this.unitTest.createProducer(this.session);
                    closeProducer = true;
               this.producer.send(this.unitTest.createMessage(this.session, this.selector));
               if(closeProducer){
                    this.producer.close();
                    this.producer = null;
               if(closeSession){
                    this.session.close();
                    this.session = null;
          } catch (JMSException e) {
               e.printStackTrace();
Receiver.java
package pl.ericpol.jmstest;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
public class Receiver extends Thread implements MessageListener{
     private Connection connection = null;
     private Session session = null;
     private Destination destination = null;
     private MessageConsumer consumer = null;
     private Connection sendConnection = null;
     private Session sendSession = null;
     private MessageProducer producer = null;
     private String qname = null;
     private String selector = null;
     private int messagesToReceive = -1;
     private int delay = -1;
     private UnitTest unitTest = null;
     private boolean active = true;
     private long[][] localStats = null;
     private Boolean monitor = new Boolean(true);
     public Receiver(ConnectionFactory cf, Connection sendConnection, Session sendSession, MessageProducer producer,
               String code, UnitTest unit){
          try {
               this.connection = cf.createConnection();
               this.session = this.connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
               this.destination = this.session.createQueue(this.qname);
               this.consumer = this.session.createConsumer(this.destination, UnitTest.KEY + " = '" + code + "'");
               this.consumer.setMessageListener(this);
               this.connection.start();
               this.producer = producer;
               this.sendSession = sendSession;
               this.sendConnection = sendConnection;
          } catch (JMSException e) {
               e.printStackTrace();
          } catch (NumberFormatException e1) {
               e1.printStackTrace();
     public void run() {
          if(this.consumer == null){
          } else {
               this.sleep(0);
               this.close();
               TestManager.getInstance().unitTestFinished();
     public synchronized void onMessage(Message arg0) {
          Message message = arg0;
          if(this.active){
               if(message == null){
               } else {
                    if(message instanceof TextMessage){
                              this.registerDeliveryTime(this.localStats.length - this.messagesToReceive, message);
                              this.sleep(this.delay);
                              synchronized(this.monitor){
                                   if(--this.messagesToReceive == 0){
                                        this.unitTest.messagesReceived();
                                   } else {
                                        if(this.active){
                                             this.send();     
                    } else {
          } else {
          if(! this.active){
               this.notify();
     public synchronized void deactivate(){
     public int getMessagesToReceive(){
          return this.messagesToReceive;
     private void send(){
          try {
               boolean closeSession = false;
               boolean closeProducer = false;
               if(this.sendSession == null){
                    this.sendSession = this.sendConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
                    closeSession = true;
               if(this.producer == null){
                    this.producer = this.unitTest.createProducer(this.sendSession);
                    closeProducer = true;
               this.producer.send(this.unitTest.createMessage(this.sendSession, this.selector));
               if(closeProducer){
                    this.producer.close();
                    this.producer = null;
               if(closeSession){
                    this.sendSession.close();
                    this.sendSession = null;
          } catch (JMSException e) {
               e.printStackTrace();
     private synchronized void sleep(int delay){
     private void registerDeliveryTime(int index, Message message){
     private synchronized void close(){
          try {
               if(this.producer != null){
                    this.producer.close();
               if(this.sendSession != null){
                    this.sendSession.close();
                    this.sendSession = null;
               if(this.sendConnection != null){
                    this.sendConnection.close();
                    this.sendConnection = null;
               if(this.consumer != null){
                    this.consumer.close();
                    this.consumer = null;
               if(this.session != null){
                    this.session.close();
                    this.session = null;
               if(this.connection != null){
                    this.connection.close();
                    this.connection = null;
          } catch (JMSException e) {
               e.printStackTrace();
TestUnit.java
package pl.ericpol.jmstest;
import java.util.HashMap;
import java.util.Iterator;
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import com.sun.messaging.ConnectionFactory;
import com.sun.messaging.QueueConnectionFactory;
public class UnitTest extends Thread{
     public static final String KEY = "Type";
     private ConnectionFactory cf = null;
     private Connection sendConnection = null;
     private Session sendSession = null;
     private MessageProducer producer = null;
     private int delay = -1;
     private int messagesPerCall = -1;
     private int loop = -1;
     private int timeOut = -1;
     private int maxLoops = -1;
     private boolean waitingFlag = false;
     private boolean messagesReceived = false;
     public UnitTest(int loop){
          try {               
               this.cf = new QueueConnectionFactory();
               this.applyProps(this.cf, Properties.getInstance().getSunProps());
               this.sendConnection = this.cf.createConnection();
               if(sharedProducer){
                    this.sendSession = this.sendConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
                    this.producer = this.createProducer(this.sendSession);
               } else if(sharedSession){
                    this.sendSession = this.sendConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
               this.sendConnection.start();
          } catch (NumberFormatException e){
               MyLogger.logger.error("number format exception!!");
          } catch (JMSException e) {
               e.printStackTrace();
     public void run(){
          String selector = String.valueOf(Randomizer.getRandInt(Integer.MAX_VALUE));
          Receiver receiver = new Receiver(this.cf, this.sendConnection, this.sendSession, this.producer, selector, this);
          receiver.start();
          long startTime = System.currentTimeMillis();
          this.send(selector);
          synchronized (this) {
               if(! this.messagesReceived){
                    this.sleep(this.timeOut);     
          long finishTime = System.currentTimeMillis();
          receiver.deactivate();
          if(++this.loop < this.maxLoops && TestManager.getInstance().getStatus()){
               UnitTest newTest = new UnitTest(this.loop);
               newTest.start();
          } else {
               TestManager.getInstance().workerFinished();
     public void messagesReceived(){
     private synchronized void sleep(int delay){
     private void applyProps(ConnectionFactory cf, HashMap props){
     private void send(String selector){
          Sender sender = new Sender(this.sendConnection, this.sendSession, this.producer, selector, this);
          sender.send();
     public MessageProducer createProducer(Session session){
          MessageProducer producer = null;
          String qname = (String) Properties.getInstance().getOtherProps().get(Properties.JMS_QUEUE_NAME);
          try {
               producer = session.createProducer(session.createQueue(qname));
               producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
          } catch (JMSException e) {
               e.printStackTrace();
          return producer;
     public TextMessage createMessage(Session session, String selector){
          try {
               TextMessage message = session.createTextMessage();
               message.setStringProperty(UnitTest.KEY, selector);
               String messageLenAsString = (String) Properties.getInstance().getOtherProps().get(Properties.JMS_MESSAGE_LENGTH);
               int messageLen = Integer.parseInt(messageLenAsString);
               StringBuffer buf = new StringBuffer();
               buf.append(selector).append("-");
               for(int i = 0; i < messageLen; i++){
                    buf.append("x");
               message.setText(buf.toString());
               return message;
          } catch(NumberFormatException e){
               MyLogger.logger.error("bad message length!!");
          } catch (JMSException e) {
               e.printStackTrace();
          return null;
}

If you go here:
http://www.sun.com/software/solaris/get.jsp
and
1.Check Sun Java Enterprise (or the Sun Java Application Platform Suite),
2.Click Get Download and Media
3. Then select Systems for windows (the bar at the top)
I beleive you can get Message Queue 3.6 SP3 from it, by only installing the Message Queue component.
Note: it is a large download (500 Mb for Application Platform), especially for Sun Java Enterprise...
TE

Similar Messages

  • Extremely slow wireless throughput on WRVS4400N

    I am getting extremely low wireless throughput on my new WRVS4400N. I am using it with 802.11g laptops, and it doesn't matter what mode I put it in - g only, b/g, g/n, or b/g/n. It connects at 54 mbits/s, and as soon as I start to send data, it drops down to 11, 5.5, or even 1 mbps. It happens with several different laptops with g cards, and none of the wireless settings I've tried seem to help.
    It appears other people have had this problem. Is this a known problem? SHould I just return it?
    (Mod Note: Edited for non-compliance of forum guidelines.)Message Edited by daikunzeon on 12-08-2006 01:46 PM

    hi , using wireless N practically , I've noticed that it works best when u have WPA2 encryption with either AES or TKIP ...try that and observe...

  • Volume output is extremly low on Z3

    My xperia z3's volume output is extremly low comparted to my old iphone 4 and also without any bass even when trying the same set of headphones on both of them , and i tried clear audo+ and DSEE HX but they dont help at all with the volume they make it worse and i tired increasing everything in the equalizer inluding the bass and still nothing is there anyway i could fix this or is there something wrong with my phone?

    Seems this is a common problem for people, I'm experiencing the same problem with my z3 compact.
    The way to fix this is to root your phone and then it's just a matter of editing a text file inside your phone to raise the overall volume level.
    I've posted up a message here too about it, just want for someone to pass it onto Sony and hope that it can be fixed, it's not a major thing for them, it would be quite easy for them to fix.

  • Laser Jet 100 Color MFP M175nw "Very low" message even after changing cartridge

    Hello, Windows 7, 64 bit. Connection: USB. After a "supply very low" message for the black cartridge, I changed it to a completely new one (HP original toner with the hologram), but I still got a "very low" message and the print quality remained faint. Nothing worked: I tried the 3 solutions posted by Shirlzz1 to another user that had exactly the same problem (Alan_Gilmore), i.e. 1) taking out and reseating cartridges, 2) hard reset, and 3) taking cartridges out and hard reset, then reseating cartridges. I also tried a cleaning and a print quality report. All looked fine, but still "very low" message and faint print quality. The only thing that worked was changing the cartridge a second time to a completely different (new) one -- now everything's fine. So I'm guessing the first replacement cartridge I used is defective. However, is there anything else I can try with the apparently defective cartridge? They do cost a pretty penny, especially here in Denmark. Thanks for taking the time to look at this.

    Hi,
    Please check for these settings
    setup menu> system setup>supply settings
    Under this you have a option
    Black Cartridge
    very low settings>stop/Prompt/Continue, select continue
    low threshold> on/off
    same for color too
    Hope this helps
    Although I am an HP employee, I am speaking for myself and not for HP.
    *Say thanks by clicking the "Kudos! Star" which is on the left*
    Make it easier for other people to find solutions, by marking my answer with "Accept as Solution" if it solves your issue.

  • Hi.  I am having issues with copying files to my shared WB 2TB HDD connected to my airport extreme.  Comes up with error 50.  I am using a Macbook Pro to copy from so not sure what I am doing wrong.  Can someone help? thanks Rory

    Hi.  I am having issues with copying files to my shared WB 2TB HDD connected to my airport extreme.  Comes up with error 50.  I am using a Macbook Pro to copy from so not sure what I am doing wrong.  Can someone help? thanks Rory

    These links might provide some information that may be of help.
    http://support.apple.com/kb/TA20831
    https://discussions.apple.com/message/2035035?messageID=2035035
    I've encountered this error myself upon occasion.  If I remember correctly, it was a permissions/ownership issue with the some of the files I was copying.

  • How do I replace low res media with the hi res version of the same media?

    How do I replace low res media with the hi res version of the same media without doing all my work all over again?
    Message was edited by: Lemmontage

    Assuming you used Smart Objects, just replace contents with the highres file.

  • Iphone 5 low battery settings with wifi

    Are there any special Iphone 5 low battery settings with wifi? Today I  was using my iphone and the wifi magically turned off by itself. I  figured it was just having trouble finding the wifi so I went to my  settings to see what was going on. Somehow it turned itself off. I'm  guessing this is because I had a low battery. I just got the battery  message saying my phone had reached 20% battery a few minutes before  that happened. Has this ever happened to anyone before?

    mattatl wrote:
    Has this ever happened to anyone before?
    Yes, and you would have had that answer had you bothered to search this forum before posting. 
    Basics from the manual are restart, reset, restore from backup, restore as new.

  • HP LaserJet M1522 Error Code 49 + "Memory is Low" Message.

    i am having a problem with my HP LaserJet M1522 Error Code 49 + "Memory is Low" Message can anyone tell me how to fix this?

    update your firmware download it from hp website
    tecnical support for hp printing

  • XI : Simulating Extreme Concurrent Message Volume

    Hello All,
    Have you been stumbled with performance or time out problems in XI. Wondered of a way to generate the load before going live with the scenario??
    /people/sap.user72/blog/2006/09/19/xi-simulating-extreme-concurrent-message-volume
    --Naveen

    Hi James,
    this is very easy to check in your environment:
    2 ways:
    a) the easiest one:
    go to RWB - performence monitoring on your dev or qa XI
    and choose your message
    from the you can see the average message size
    for one interface - this is exactly what you want
    b) the longer one:
    go to sxmb_moni on the dev or qa XI
    open a few messages (matmas, sales orders)
    and take a look at the content of the message,
    view - source - save a file... and you have the message size  - but this way you cannnot be sure if this is an average size... so the first method is much better
    Regards,
    michal

  • Low headphone audio with Mp4 playback

    Trying to watch an Mp4 video and audio is extremely low on headphones. I tried using Quicktime, VLC, Flip player and iTunes and all are outputting almost inaudible levels of audio on my headphones with a characteristic underwater gurgling sound. But when I unplug the headphones, it plays the audio at a normal level over the speakers. All the videos played back with audio at normal levels yesterday on both headphones and speakers.
    It doesn't seem to be a problem with the headphones since Youtube and Spotify sound perfectly fine.
    Tried to change setups in Midi without any luck.
    I have Air Parrot installed as a mirroring software, but it's never caused a problem like this before. I suspect it might have something to do with this, but even when I force quick Air Parrot, the problem remains.
    Macbook Air 13", 10.9.4 OSX, can't install new operating system due to possible software incompatibility
    Thanks!

    Ok so I just tried a pair of earbuds and it's working fine...
    Why would my nice headphones be selective of one program's audio over another...is there something I can do to change the output on my computer?

  • PLEASE HELP!!! disk space is low message

    i received a disk space is low message as i am working in my lightroom 5. i keep clicking ok and it does not let me get out of this screen. it is telling me i need to remove files or empty trash to make space. do i need to make space in lightroom or on my hard drive? please help, i have had this issue before.

    25% seems pretty arbitrary and unreasonable. 
    With today's drive that means on a 2TB drive I need to keep 1/2 TB free. That means I am paying for 2TB with only 1.5 usable just to use LR. In my case where I have four 2TB drive I have to have 2TB free or equivalently have an entire drives worth of space (4*500M) I should not be using.
    Even given that was true I get a similar message and it states I do not have at least 20M free on the drive where my catalog is. The drive where my catalog is has 800M+ of a 2TB drive free (exceeding the 25% rule). 
    And if you are talking about just the "C:" or "root" drive then I have a 250G drive with over 180M free. And neither my catalog or my pictures are on it.
    Still looking for an answer. 
    It is very annoying to be in the middle of an edit and have the message pop up and stop the edit. Then you have to clear the message, undo the incomplete edit and start over hoping the message does not come back.
    Any additional suggestions?

  • TV out low contrast problem with Tiger

    I just recently upgraded to Tiger and went straight from 10.3.9 to 10.4.5.
    My mini-DVI to TV adapter has always worked perfectly before, but now the display on my TV is very dim, with extremely low contrast and brightness. The TV is recognised correctly and all the settings, color profiles etc. are correct.
    I have verified that this is strictly a software issue as booting from 10.3.9 fixes the problem, and the output to TV is bright and beautiful once again.
    I've searched, but found no mention of this particular problem anywhere. I would love to find a solution as the TV out from the PowerBook is basically broke, and dragging the external FW drive to the TV to boot from 10.3.9 is not a practical option.
    PowerBook G4 12" 1 GHz   Mac OS X (10.4.5)   768 RAM

    Thought it wouldn't do any harm to run MacJanitor - but it didn't do any good, either.
    This continues through restarts. It is definitely local to this one machine as another Mac does not show it.
    EDIT If I go in via http://discussions.apple.com/category.jspa?categoryID=160 I get the same thing except the Recent Threads only show solved/question icons, no titles or anything else.
    M

  • Satellite A100-532: microphone sound volume is extremely low

    I just bought Satellite A100-532 and I have a problem with sound input. I can't use microphone to chat with my friend on msn or even to record my voice on to the hard drive because the sound volume is extremely low.
    I tried turning up all the volume on the desktop and on the RealTek HD sound manager but did not help. Microphone is working perfectly fine as I can hear myself well on the speakers.
    Normally, with my old laptop (M30 series) I could use the Sound Recorder to record music which I play using Winamp or WinMediaPlayer but for this new laptop it does not detect any sound at all..just silence.
    Please advise.

    Hi
    You should check also the volume controls in the "Sound & Audio devices" in control panel.
    In the "Volume" tab please go to "Advanced".
    Then a "Volume control" should appear.
    Check if all controls are set to high level.
    Furthermore enter the "options" and "properties" and enable all volume controls.
    Change also to "recording" and enable there also all controls.
    Additional you should check if the all "recording controls" are set to high.
    Use "Advanced" option of mic and play around with the mic boost settings.
    I'm sure you will find the best settings for your mic recording

  • Vocals are extremely low...help!

    On iTunes, my audio is okay except the vocals are extremely low (or sometimes even unaudible). But when I listen to the songs on my iPod, the vocals are totally normal. I've tried fooling around with the equalizer, and then completely turning the equalizer off, but it still doesn't work. I've checked all the forums, but no one seems to have this problem. Then I uninstalled iTunes and installed it again, but the problem remains.
    Does anyone know how to fix this?!

    Are you aware that you can adjust the volume levels from within iMovie by clicking on the icon located in the centre of the screen amongst 10 other icons, it's the one that looks like a ray gun attack!!! (2nd from right icon)
    Failing this, what settings are you using in MPEG Streamclip?
    I use EXPORT TO QUICKTIME, then select compression 'APPLE DV - PAL' from the dropdown menu, and move the quality bar to 100%.
    Click on 'Make movie'.

  • XBR75X85OC audio volume setting from receiver extremely low

    Equipment involved:Sony AV receiver STRDN1040, Sony Bluray player BDPBX510 and DISH Hopper receiver.Equipment currently configured per TV owners manual HD BRAVIA SYNC Basic connection. Volume is extremely low. 

    Frankly speaking, ThinkPad W510 speakers or/and it's Conexant sound chip/driver is mediocre. It seems that it is a design fault or Lenovo is trying to save that small amount of additional cost for each of the component so that they can earn more. I used an T400 loaner set before, the speaker and the Conexant SmartAudio was as great or better than my Dell Studio 15. 
    I am not sure what the heck, Lenovo Research & Development department is doing to make W510 sound mediocre. As an end-user and W510 a mobile workstation, I would also expect the speaker/sound chip to be better than T400.
    I have contacted the Lenovo Service Center, they said the final version of the driver is under testing and has not been released to their support website. But I think the soft audio volume problem could never be resolved unless Lenovo would release another version of internal speaker, but not possible as a refreshed version of W-series is coming up next year. (eg. W520)
    Problem/bug listed out for the latest version of W510 Audio Driver
    http://forums.lenovo.com/t5/W-Series-ThinkPad-Laptops/W510-newest-driver-released-in-7-Oct-is-still-...
    Best Regards
    Peter
    Moderator edit by bananaman: Removed section not in compliance with the Community Rules.

Maybe you are looking for

  • How can i get my itunes to update?

    My iTunes program won't update on my computer. Is there a way I can do that manually?

  • How can I transfer my old iTunes library to my new one?

    Just bought a mac pro this week and need to get all of the stuff off of my old macbook. the main thing is how do i get all that stuff on here so that when i plug my iphone into this computer it won't completely have to reset?

  • Adobe Bridge html gallery

    HI, can somebody can tell one thing. I make this html gallery put at my web, but I want maka from that gallery link back to my web, I try, but can't. I make name: Back to Home then put link at that name to my web, save all and then try when press f12

  • Diffrence between Codec C40 Premium Resolution Option & Multisite MS Option & Dual Display Option

    What is the difference between Codec C40 Premium Resolution Option LIC-C40-PR Codec C40 Multisite MS Option LIC-C40-MS Codec C40 Dual Display Option LIC-C40-DD

  • Menu Option in j2me

    Hi all, I want to write a code in which i want to select one by one images using menu options..or sub menu option. If somebody have the menu option code or any good tutorial to have this j2me menu stuff... Plz send it....I will appreciate this. Thank