3 Replies Latest reply on Jan 20, 2004 6:17 PM by adrian.brock

    Performance issues in JMS configuration with Oracle as persi

    fildiz57

      Hi all,

      I have seen many postings around this subject and I am able to configure JBoss (3.2.1) to use Oracle as JMS persistance storage.

      In my application we transfer about 40,000 messages (2kbytes each)per hour. So I am trying to get the best performance out of this configuration. But under certain situations my JMS queue size is getting incredibly big and everything is failing.

      Before looking other areas/options I wanted to understand what data types JBoss supports - for the MESSAGEBLOB column; and which one is most efficient.

      So my question is in regards to jbossmq-service.xml. For BLOB_TYPE I see that there are options to choose between
      BLOB_TYPE=BYTES_BLOB
      BLOB_TYPE=OBJECT_BLOB
      BLOB_TYPE=BINARYSTREAM_BLOB

      and for table creation there are options like;
      CREATE_MESSAGE_TABLE = CREATE TABLE JMS_MESSAGES (MESSAGEID INTEGER NOT NULL, \
      DESTINATION VARCHAR(50) NOT NULL, TXID INTEGER, TXOP CHAR(1), \
      MESSAGEBLOB BLOB, PRIMARY KEY (MESSAGEID, DESTINATION) )

      or

      CREATE_MESSAGE_TABLE = CREATE TABLE JMS_MESSAGES ( MESSAGEID INTEGER NOT NULL, \
      DESTINATION VARCHAR(50) NOT NULL, TXID INTEGER, TXOP CHAR(1), \
      MESSAGEBLOB LONG RAW, PRIMARY KEY (MESSAGEID, DESTINATION) )

      Difference being the MESSAGEBLOB column as BLOB, or LONG RAW...

      There maybe other options too.

      So if someone can tell me which data type is more efficient; which pair I should use, if there are other data types so on I'll appreciate it.

      Also CREATE_TABLES_ON_STARTUP=TRUE does not seem to work for me. So I create tables externally... Any ideas to what I should look at?

        • 1. Re: Performance issues in JMS configuration with Oracle as p

          To fix the create tables on startup you will need to use lower case "true".
          This is something that has been fixed to ignore the case.

          Some of your problems is likely to be the lack of indices on the tables.
          Get your Oracle DBA to analyse the queries to determine what indices
          will improve performance.
          I'd be interested to know the results of this, it is something I've been
          meaning to look at for the default configuration files.

          I don't know enough about Oracle's Blob implementation to answer your
          last question. I'd suggest experimenting with this yourself and report back
          the results.

          Regards,
          Adrian

          • 2. Re: Performance issues in JMS configuration with Oracle as p
            fildiz57

            Achieved some improvements by followings (so far);

            1. Use the combination,
            Blob Type as;
            BLOB_TYPE=BINARYSTREAM_BLOB
            and Column Type as;
            MESSAGEBLOB BLOB

            2. Add indexes on the columns DESTINATION, MESSAGEID and TXID (Top SQL queries uses these).
            Note: I could also remove DESTINATION from all the queries (since in my application I have only a single destination, but opted to keep this as generic as possible).

            3. Use a separate DB instance for JMS (if your main application is also using DB, use a separate instance).

            4. Disable Redo-log (if your DBA agrees).


            I also wanted to compare the performance by replacing JBoss queueing with IBM MQ; however the instructions I found on the forums all relate to JBoss 2.x, MQ 5.1 (far different than 3.2.x and 5.3 respectively). Anywhere I can find latest instructions for replacing JBoss-MQ with IBM-MQ would be greatly appreciated.