You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by vipun <vi...@gmail.com> on 2011/10/24 17:25:52 UTC

Qpid Java Broker performance lower than expected

Hi,
 I'm collecting performance figures for QPID Java based broker. The results
which i got after running the  QpidBench program are a little lower than
expected. My machine which is a quad core, 8GB RAM with Windows 7 gives a
message throughput of around 400 messages when both producer and consumer
client instances are active.

Qpid Java broker is configured to run over Derby and messaging is in
persistent mode.  I was expecting somewhere around 1000 atleast going by the
following blog which does comparisons between different messaging providers.

http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/

Do you think, the figures from my tests are correct, or what are the
expected performance results, or are there any tweaks which need to be done
for performance gains. I am running out of trunk.

Thanks & Regards
Vinay 

--
View this message in context: http://apache-qpid-users.2158936.n2.nabble.com/Qpid-Java-Broker-performance-lower-than-expected-tp6925405p6925405.html
Sent from the Apache Qpid users mailing list archive at Nabble.com.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


RE: Qpid Java Broker performance lower than expected

Posted by Vijay Devadhar <vd...@salesforce.com>.
Hi Robbie,

Thanks for detailed email responses; They really help us in understanding
the internals of qpid; In  this and earlier email to Praveen (my co-worker),
I had the sense that you were suggesting that Berkely DB (BDB) persistent
layer was better than Derby. Is that the case?

If yes, what in terms of design, architecture and interaction with messaging
layer makes BDB better than Derby store?

Thanks
Vijay

-----Original Message-----
From: Robbie Gemmell [mailto:robbie.gemmell@gmail.com] 
Sent: Tuesday, October 25, 2011 4:38 PM
To: users@qpid.apache.org
Subject: Re: Qpid Java Broker performance lower than expected

Hi Vinay,

I havent done any performance benchmarking of the Derby store to know
what a representative number would actually be, but I will try to take
a look at some point. I havent actually used QpidBench, so can I ask
if there were any specific command(s) you ran so I can try the same
scenarios?

We havent paid much attention to performance of the Java broker for a
while unfortunately because we have been working on various other
issues such agetting memory usage under control and sorting out
correctness issues etc since adding a newer protocol version and doing
some significant refactorings and reimplementations, but as we reach
the light at the end of the tunnel on those it is something which
should move further up the priority list.

It is worth nothing that there is also a BDB persistent store for the
Java broker that you might want to look at, as I would expect it to be
faster. It has recently been moved into the main repo, but is still an
optional module which you need to explicitly ask for to be built
(because BDB itself uses the Sleepycat Licence, which invokes
restrictions upon distribution that mean it is not Apache Licence
compatible). You can build the store module and include it (but not
BDB itself) in the broker binary release bundle by using the following
build command:

ant build release-bin -Dmodules.opt=bdbstore -Ddownload-bdb=true

You will find that downloads the bdb je jar into
qpid/java/lib/bdbstore, and then creates a broker binary release in
qpid/java/broker/release which includes the additional store module.
You can make the BDB je jar available to the broker by creating a
lib\opt subdir and copying the je jar into it, where it will get
picked up automatically assuming you are using Java 6+. You can then
use org.apache.qpid.server.store.berkeleydb.BDBMessageStore as the
store class config instead of the other stores.

Robbie

On 24 October 2011 16:25, vipun <vi...@gmail.com> wrote:
> Hi,
>  I'm collecting performance figures for QPID Java based broker. The results
> which i got after running the  QpidBench program are a little lower than
> expected. My machine which is a quad core, 8GB RAM with Windows 7 gives a
> message throughput of around 400 messages when both producer and consumer
> client instances are active.
>
> Qpid Java broker is configured to run over Derby and messaging is in
> persistent mode.  I was expecting somewhere around 1000 atleast going by the
> following blog which does comparisons between different messaging providers.
>
> http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
>
> Do you think, the figures from my tests are correct, or what are the
> expected performance results, or are there any tweaks which need to be done
> for performance gains. I am running out of trunk.
>
> Thanks & Regards
> Vinay
>
> --
> View this message in context: http://apache-qpid-users.2158936.n2.nabble.com/Qpid-Java-Broker-performance-lower-than-expected-tp6925405p6925405.html
> Sent from the Apache Qpid users mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:users-subscribe@qpid.apache.org
>
>

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


Re: Qpid Java Broker performance lower than expected

Posted by vipun <vi...@gmail.com>.
The parameters we had used with the original QpidBench program is as follows:

-c 10000 -i 1000 -s 1024 -m both --timestamp false --message-id false
--message-cache true --persistent true --jms true

--
View this message in context: http://apache-qpid-users.2158936.n2.nabble.com/Qpid-Java-Broker-performance-lower-than-expected-tp6925405p6939008.html
Sent from the Apache Qpid users mailing list archive at Nabble.com.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


Re: Qpid Java Broker performance lower than expected

Posted by vipun <vi...@gmail.com>.
Hi Robbie,
  Thanks for the reply. We also didn't see much performance difference
between broker instances based on Derby store and berkeley db store. However
readings we obtained now are quite ok, here's the summary of readings we
have with Derby persistence:
We have also tinkered a little bit with the program Qpid Bench to allow for
multiple producers and consumers, and here's our reading.

producers   consumers   Msg_size   producers_rate    consumers_rate
threads      threads
1              1               1k            921.74               877.73

10            10              1k            4357.87             7132.64

50            50              1k            5511.71             12670.5

40            70              1k            5753.82             24654.24

50            60              1k            6319.43             21525.96

Regards
Vinay

--
View this message in context: http://apache-qpid-users.2158936.n2.nabble.com/Qpid-Java-Broker-performance-lower-than-expected-tp6925405p6938973.html
Sent from the Apache Qpid users mailing list archive at Nabble.com.

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


Re: Qpid Java Broker performance lower than expected

Posted by Robbie Gemmell <ro...@gmail.com>.
The reason I said that was that it takes a *lot* longer to run
some(/all) of the system tests when using the DerbyStore, but doing
some very noddy tests today with a single consumer and producer showed
there wasnt any great difference between them. Both were noticably
slower than historically, so it is something we will be looking into
improving. One particular system test I previously noticed a large
difference in uses multiple consumers and producers though, and so
that could actually be where the difference lies because the BDB store
is implemented somewhat differently to the Derby one and so possibly
has an artificial edge in that regard.

Robbie

On 26 October 2011 03:14, Danushka Menikkumbura
<da...@gmail.com> wrote:
> Hi Robbie,
>
> I did not notice that the BDB store was faster than the Derby store when I
> checked some time back.
>
> Thanks,
> Danushka
>
> On Wed, Oct 26, 2011 at 5:07 AM, Robbie Gemmell <ro...@gmail.com>wrote:
>
>> Hi Vinay,
>>
>> I havent done any performance benchmarking of the Derby store to know
>> what a representative number would actually be, but I will try to take
>> a look at some point. I havent actually used QpidBench, so can I ask
>> if there were any specific command(s) you ran so I can try the same
>> scenarios?
>>
>> We havent paid much attention to performance of the Java broker for a
>> while unfortunately because we have been working on various other
>> issues such agetting memory usage under control and sorting out
>> correctness issues etc since adding a newer protocol version and doing
>> some significant refactorings and reimplementations, but as we reach
>> the light at the end of the tunnel on those it is something which
>> should move further up the priority list.
>>
>> It is worth nothing that there is also a BDB persistent store for the
>> Java broker that you might want to look at, as I would expect it to be
>> faster. It has recently been moved into the main repo, but is still an
>> optional module which you need to explicitly ask for to be built
>> (because BDB itself uses the Sleepycat Licence, which invokes
>> restrictions upon distribution that mean it is not Apache Licence
>> compatible). You can build the store module and include it (but not
>> BDB itself) in the broker binary release bundle by using the following
>> build command:
>>
>> ant build release-bin -Dmodules.opt=bdbstore -Ddownload-bdb=true
>>
>> You will find that downloads the bdb je jar into
>> qpid/java/lib/bdbstore, and then creates a broker binary release in
>> qpid/java/broker/release which includes the additional store module.
>> You can make the BDB je jar available to the broker by creating a
>> lib\opt subdir and copying the je jar into it, where it will get
>> picked up automatically assuming you are using Java 6+. You can then
>> use org.apache.qpid.server.store.berkeleydb.BDBMessageStore as the
>> store class config instead of the other stores.
>>
>> Robbie
>>
>> On 24 October 2011 16:25, vipun <vi...@gmail.com> wrote:
>> > Hi,
>> >  I'm collecting performance figures for QPID Java based broker. The
>> results
>> > which i got after running the  QpidBench program are a little lower than
>> > expected. My machine which is a quad core, 8GB RAM with Windows 7 gives a
>> > message throughput of around 400 messages when both producer and consumer
>> > client instances are active.
>> >
>> > Qpid Java broker is configured to run over Derby and messaging is in
>> > persistent mode.  I was expecting somewhere around 1000 atleast going by
>> the
>> > following blog which does comparisons between different messaging
>> providers.
>> >
>> > http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
>> >
>> > Do you think, the figures from my tests are correct, or what are the
>> > expected performance results, or are there any tweaks which need to be
>> done
>> > for performance gains. I am running out of trunk.
>> >
>> > Thanks & Regards
>> > Vinay
>> >
>> > --
>> > View this message in context:
>> http://apache-qpid-users.2158936.n2.nabble.com/Qpid-Java-Broker-performance-lower-than-expected-tp6925405p6925405.html
>> > Sent from the Apache Qpid users mailing list archive at Nabble.com.
>> >
>> > ---------------------------------------------------------------------
>> > Apache Qpid - AMQP Messaging Implementation
>> > Project:      http://qpid.apache.org
>> > Use/Interact: mailto:users-subscribe@qpid.apache.org
>> >
>> >
>>
>> ---------------------------------------------------------------------
>> Apache Qpid - AMQP Messaging Implementation
>> Project:      http://qpid.apache.org
>> Use/Interact: mailto:users-subscribe@qpid.apache.org
>>
>>
>

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org


Re: Qpid Java Broker performance lower than expected

Posted by Danushka Menikkumbura <da...@gmail.com>.
Hi Robbie,

I did not notice that the BDB store was faster than the Derby store when I
checked some time back.

Thanks,
Danushka

On Wed, Oct 26, 2011 at 5:07 AM, Robbie Gemmell <ro...@gmail.com>wrote:

> Hi Vinay,
>
> I havent done any performance benchmarking of the Derby store to know
> what a representative number would actually be, but I will try to take
> a look at some point. I havent actually used QpidBench, so can I ask
> if there were any specific command(s) you ran so I can try the same
> scenarios?
>
> We havent paid much attention to performance of the Java broker for a
> while unfortunately because we have been working on various other
> issues such agetting memory usage under control and sorting out
> correctness issues etc since adding a newer protocol version and doing
> some significant refactorings and reimplementations, but as we reach
> the light at the end of the tunnel on those it is something which
> should move further up the priority list.
>
> It is worth nothing that there is also a BDB persistent store for the
> Java broker that you might want to look at, as I would expect it to be
> faster. It has recently been moved into the main repo, but is still an
> optional module which you need to explicitly ask for to be built
> (because BDB itself uses the Sleepycat Licence, which invokes
> restrictions upon distribution that mean it is not Apache Licence
> compatible). You can build the store module and include it (but not
> BDB itself) in the broker binary release bundle by using the following
> build command:
>
> ant build release-bin -Dmodules.opt=bdbstore -Ddownload-bdb=true
>
> You will find that downloads the bdb je jar into
> qpid/java/lib/bdbstore, and then creates a broker binary release in
> qpid/java/broker/release which includes the additional store module.
> You can make the BDB je jar available to the broker by creating a
> lib\opt subdir and copying the je jar into it, where it will get
> picked up automatically assuming you are using Java 6+. You can then
> use org.apache.qpid.server.store.berkeleydb.BDBMessageStore as the
> store class config instead of the other stores.
>
> Robbie
>
> On 24 October 2011 16:25, vipun <vi...@gmail.com> wrote:
> > Hi,
> >  I'm collecting performance figures for QPID Java based broker. The
> results
> > which i got after running the  QpidBench program are a little lower than
> > expected. My machine which is a quad core, 8GB RAM with Windows 7 gives a
> > message throughput of around 400 messages when both producer and consumer
> > client instances are active.
> >
> > Qpid Java broker is configured to run over Derby and messaging is in
> > persistent mode.  I was expecting somewhere around 1000 atleast going by
> the
> > following blog which does comparisons between different messaging
> providers.
> >
> > http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
> >
> > Do you think, the figures from my tests are correct, or what are the
> > expected performance results, or are there any tweaks which need to be
> done
> > for performance gains. I am running out of trunk.
> >
> > Thanks & Regards
> > Vinay
> >
> > --
> > View this message in context:
> http://apache-qpid-users.2158936.n2.nabble.com/Qpid-Java-Broker-performance-lower-than-expected-tp6925405p6925405.html
> > Sent from the Apache Qpid users mailing list archive at Nabble.com.
> >
> > ---------------------------------------------------------------------
> > Apache Qpid - AMQP Messaging Implementation
> > Project:      http://qpid.apache.org
> > Use/Interact: mailto:users-subscribe@qpid.apache.org
> >
> >
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:users-subscribe@qpid.apache.org
>
>

Re: Qpid Java Broker performance lower than expected

Posted by Robbie Gemmell <ro...@gmail.com>.
Hi Vinay,

I havent done any performance benchmarking of the Derby store to know
what a representative number would actually be, but I will try to take
a look at some point. I havent actually used QpidBench, so can I ask
if there were any specific command(s) you ran so I can try the same
scenarios?

We havent paid much attention to performance of the Java broker for a
while unfortunately because we have been working on various other
issues such agetting memory usage under control and sorting out
correctness issues etc since adding a newer protocol version and doing
some significant refactorings and reimplementations, but as we reach
the light at the end of the tunnel on those it is something which
should move further up the priority list.

It is worth nothing that there is also a BDB persistent store for the
Java broker that you might want to look at, as I would expect it to be
faster. It has recently been moved into the main repo, but is still an
optional module which you need to explicitly ask for to be built
(because BDB itself uses the Sleepycat Licence, which invokes
restrictions upon distribution that mean it is not Apache Licence
compatible). You can build the store module and include it (but not
BDB itself) in the broker binary release bundle by using the following
build command:

ant build release-bin -Dmodules.opt=bdbstore -Ddownload-bdb=true

You will find that downloads the bdb je jar into
qpid/java/lib/bdbstore, and then creates a broker binary release in
qpid/java/broker/release which includes the additional store module.
You can make the BDB je jar available to the broker by creating a
lib\opt subdir and copying the je jar into it, where it will get
picked up automatically assuming you are using Java 6+. You can then
use org.apache.qpid.server.store.berkeleydb.BDBMessageStore as the
store class config instead of the other stores.

Robbie

On 24 October 2011 16:25, vipun <vi...@gmail.com> wrote:
> Hi,
>  I'm collecting performance figures for QPID Java based broker. The results
> which i got after running the  QpidBench program are a little lower than
> expected. My machine which is a quad core, 8GB RAM with Windows 7 gives a
> message throughput of around 400 messages when both producer and consumer
> client instances are active.
>
> Qpid Java broker is configured to run over Derby and messaging is in
> persistent mode.  I was expecting somewhere around 1000 atleast going by the
> following blog which does comparisons between different messaging providers.
>
> http://bhavin.directi.com/rabbitmq-vs-apache-activemq-vs-apache-qpid/
>
> Do you think, the figures from my tests are correct, or what are the
> expected performance results, or are there any tweaks which need to be done
> for performance gains. I am running out of trunk.
>
> Thanks & Regards
> Vinay
>
> --
> View this message in context: http://apache-qpid-users.2158936.n2.nabble.com/Qpid-Java-Broker-performance-lower-than-expected-tp6925405p6925405.html
> Sent from the Apache Qpid users mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:users-subscribe@qpid.apache.org
>
>

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:users-subscribe@qpid.apache.org