MSMQ Chattiness

Jul 13, 2012 at 8:47 AM

Hi,

I've implemented the Shuttle ESB to process messages sent to a private transactional queue in MSMQ. I then used the Shuttle.Core.Host to install the DLL that processes the messages as a service.

The thing that I've noticed is that when the service is started up, disk IO goes up to around 500Kb per second on C:\Windows\System32\msmq\storage\QMLog file.

From what I understand, this is the transactional history log file for MSMQ, but seeing as no messages are being sent to the queue, I'm not sure why there is such a high IO.

This is happening even after tweaking the config settings:

<inbox ...
   threadCount="1"
   durationToSleepWhenIdle="250ms,10s,30s"
   durationToIgnoreOnFailure="10s"/>

Is there something I'm missing here?

Coordinator
Jul 13, 2012 at 10:24 AM

Hi Jurg,

That does seem strange. I’ll take a look at it. But since it shouldn’t be hitting the queue it could indicate that it isn’t doing quite what it is supposed to J

This code has been running in a production environment since 10 March so it’ll be quite shocking if no-one picked up on that L

Anyway. Thanks for taking a look at Shuttle.

Will get back to you as soon as I can.

Regards,

Eben

From: JurgFlurgen [email removed]
Sent: 13 July 2012 10:47 AM
To: me@ebenroux.co.za
Subject: MSMQ Chattiness [shuttle:365537]

From: JurgFlurgen

Hi,

I've implemented the Shuttle ESB to process messages sent to a private transactional queue in MSMQ. I then used the Shuttle.Core.Host to install the DLL that processes the messages as a service.

The thing that I've noticed is that when the service is started up, disk IO goes up to around 500Kb per second on C:\Windows\System32\msmq\storage\QMLog file.

From what I understand, this is the transactional history log file for MSMQ, but seeing as no messages are being sent to the queue, I'm not sure why there is such a high IO.

This is happening even after tweaking the config settings:

<inbox ...
threadCount="1"
durationToSleepWhenIdle="250ms,10s,30s"
durationToIgnoreOnFailure="10s"/>

Is there something I'm missing here?

Coordinator
Jul 13, 2012 at 11:44 AM

Hi Jurg,

I’ve done some research and it appears as though this is normal. As per http://blogs.msdn.com/b/johnbreakwell/archive/2008/02/13/msmq-disk-performance.aspx :

"MSMQ uses a lot of disk I/O when you are requesting transactional or recoverable messaging.

So I don’t think there is anything to worry about. I am no MSMQ genius so I cannot say for sure but as I mentioned previously Shuttle is running in a prod environment at an international insurance company here in South Africa and there are around 10 endpoints running on a number of servers and nothing has gone wrong msmq-wise since 10 March.

Shuttle is also going in at one of our major banks for use in the data warehousing component; as well as an indexing product (commercialised from the work done at the insurance company).

But maybe you could check msmq against some other software or service busses. I know it may be some effort but perhaps nservicebus examples would give you an idea. I do hope you continue to use Shuttle, though J

Regards,

Eben

From: JurgFlurgen [email removed]
Sent: 13 July 2012 10:47 AM
To: me@ebenroux.co.za
Subject: MSMQ Chattiness [shuttle:365537]

From: JurgFlurgen

Hi,

I've implemented the Shuttle ESB to process messages sent to a private transactional queue in MSMQ. I then used the Shuttle.Core.Host to install the DLL that processes the messages as a service.

The thing that I've noticed is that when the service is started up, disk IO goes up to around 500Kb per second on C:\Windows\System32\msmq\storage\QMLog file.

From what I understand, this is the transactional history log file for MSMQ, but seeing as no messages are being sent to the queue, I'm not sure why there is such a high IO.

This is happening even after tweaking the config settings:

<inbox ...
threadCount="1"
durationToSleepWhenIdle="250ms,10s,30s"
durationToIgnoreOnFailure="10s"/>

Is there something I'm missing here?