Why the transaction down the performance so much???

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Why the transaction down the performance so much???

DepestBlue
Dear all,

By my test, the performance down greatly than the test case without the transaction.
For same program:
Without transaction in Session, 1000 tps;
With transaction in Session, about 10~20 tps which is absolutel y my expectation!!!!
I attached my source files and configuration files. It's much appreciated if any suggestion.

Thanks a lot!



amq_test.jar (22K) Download Attachment
activemq.xml (7K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Why the transaction down the performance so much???

gtully
For producers, only use transactions is you are sending more than one
message, so for batching. Jms already guarantees a disk sync when a
send returns.

For clients do what you wish.

Do try and cache connections/sessions/prodcuers
and if you have a single consumer cache that.

Remeber, transactions mean disk syncs, so you will always be limited
by the speed of a fsync to your disk.

2011/11/30 lzr <[hidden email]>:

> Dear all,
>
> By my test, the performance down greatly than the test case without the
> transaction.
> For same program:
> Without transaction in Session, 1000 tps;
> With transaction in Session, about 10~20 tps which is absolutel y my
> expectation!!!!
> I attached my source files and configuration files. It's much appreciated if
> any suggestion.
>
> Thanks a lot!
>
>



--
http://fusesource.com
http://blog.garytully.com
Reply | Threaded
Open this post in threaded view
|

Re:Re: Why the transaction down the performance so much???

DepestBlue
According to my comprehension of the JMS Spec, without transaction and AUTO_ACKNOWLEDGE in session the disk sync should occur once a meesage is get by the consumer; it's just like the case each message has a transaction committing?
In this case the performance of the two cases should be similar, right?


At 2011-12-01 01:12:48,"Gary Tully" <[hidden email]> wrote:

>For producers, only use transactions is you are sending more than one
>message, so for batching. Jms already guarantees a disk sync when a
>send returns.
>
>For clients do what you wish.
>
>Do try and cache connections/sessions/prodcuers
>and if you have a single consumer cache that.
>
>Remeber, transactions mean disk syncs, so you will always be limited
>by the speed of a fsync to your disk.
>
>2011/11/30 lzr <[hidden email]>:
>> Dear all,
>>
>> By my test, the performance down greatly than the test case without the
>> transaction.
>> For same program:
>> Without transaction in Session, 1000 tps;
>> With transaction in Session, about 10~20 tps which is absolutel y my
>> expectation!!!!
>> I attached my source files and configuration files. It's much appreciated if
>> any suggestion.
>>
>> Thanks a lot!
>>
>>
>
>
>
>--
>http://fusesource.com
>http://blog.garytully.com
Reply | Threaded
Open this post in threaded view
|

Re: Why the transaction down the performance so much???

Torsten Mielke-2
Hi,

I have recently run some simple performance tests when consuming msgs within a local JMS transaction (committing after every msgs) and without transaction.
There surely was a difference in performance but it was rather small. Unfortunately I don't have any numbers at hand right now but it was fairly in line with this comment from http://activemq.apache.org/should-i-use-transactions.html
 
"Incidentally, its a common misconception that transactions are slow; there's no real difference between a JMS transaction and a Message.acknowledge() from an architectural perspective in ActiveMQ;"

Btw, the maven-activemq-perf-plugin can also be used to test the speed of transacted consumers/producers
http://activemq.apache.org/activemq-performance-module-users-manual.html



Torsten Mielke
[hidden email]
[hidden email]


On Dec 1, 2011, at 1:40 AM, lzr wrote:

> According to my comprehension of the JMS Spec, without transaction and AUTO_ACKNOWLEDGE in session the disk sync should occur once a meesage is get by the consumer; it's just like the case each message has a transaction committing?
> In this case the performance of the two cases should be similar, right?
>
>
> At 2011-12-01 01:12:48,"Gary Tully" <[hidden email]> wrote:
>> For producers, only use transactions is you are sending more than one
>> message, so for batching. Jms already guarantees a disk sync when a
>> send returns.
>>
>> For clients do what you wish.
>>
>> Do try and cache connections/sessions/prodcuers
>> and if you have a single consumer cache that.
>>
>> Remeber, transactions mean disk syncs, so you will always be limited
>> by the speed of a fsync to your disk.
>>
>> 2011/11/30 lzr <[hidden email]>:
>>> Dear all,
>>>
>>> By my test, the performance down greatly than the test case without the
>>> transaction.
>>> For same program:
>>> Without transaction in Session, 1000 tps;
>>> With transaction in Session, about 10~20 tps which is absolutel y my
>>> expectation!!!!
>>> I attached my source files and configuration files. It's much appreciated if
>>> any suggestion.
>>>
>>> Thanks a lot!
>>>
>>>
>>
>>
>>
>> --
>> http://fusesource.com
>> http://blog.garytully.com