We’ve just released NServiceBus.Transport.Msmq 1.0.1 and NServiceBus 6.5.5. This release resolves a critical bug when using the MSMQ transport. The bug causes excessive logging to
MSMQLOG.BIN which can result in excessive disk IO. Message processing is unaffected, there is no message loss, or data corruption but disk performance could be affected.
MSMQ writes errors to this binary file including IO timeouts. The default time to check for messages in the queue was previously set to 10 milliseconds and this value caused excessive MSMQ logging (100 entries per queue per second).
A test with 100 idle endpoints showed a write I/O of +8MB/s on the
MSMQLOG.BIN file which is reduced to less then 150KB/s after this fix.
- #77 MSMQ Transport results in unnecessary IO when reading from empty queues due to a very short timeout value
- #5349 MSMQ Transport results in unnecessary IO when reading from empty queues due to a very short timeout value
How to know if you’re affected
All MSMQ users with large numbers of endpoints on a single server are affected.
MSMQLOG.BIN file is an MSMQ system file used for logging in binary. I/O on this file is visible in server resource monitoring. When many endpoints are hosted server metrics can indicate several megabytes per second of I/O although queues are empty and endpoints not processing any messages.
Should you upgrade immediately
Users affected by excessive disk I/O should upgrade immediately, others are recommended to upgrade when convenient as message processing is unaffected, there is no message loss or data corruption.
If after deploying this fix excessive disk I/O on the
MSMQLOG.BIN file is still observed while endpoints are idle then please contact us at firstname.lastname@example.org.
Where to get it
You can download the updated version directly from NuGet:
The team in Particular