1

We noticed that CPU usage went up from 5% TO 50% after adding NServicebus to our ASP.net MVC app. This was on a server that was not under any load. We noticed the same behavior on another server that hosted a WCF app. After trying out different things, we figured out that if we configured the bus as send only, the CPU usage dropped to 5%. Does anybody know why the cpu usage was so high when the bus is not configured as send only?

darthjit
  • 1,555
  • 13
  • 20

2 Answers2

3

I've experienced this before.

What happened to me was I set up an application pool, and it started out running as Network Service. Before I had the chance to set the application pool identity to a domain-level user (for access to file shares, etc.) the pages had already been hit, and so the NServiceBus installers had already created a queue with the Network Service credentials.

When I set the application pool user, all of a sudden it didn't have the proper permissions to the queue.

Normally NServiceBus checks for messages with a timeout if none are available to be received, but in this instance, it goes into a very tight loop of "Are there messages? I don't have permission. Are there messages? I don't have permission." and so you get the very high CPU.

I fixed the problem by deleting the queue and allowing NServiceBus to recreate it with the proper permissions.

David Boike
  • 18,545
  • 7
  • 59
  • 94
1

It's possible that the cause of the high CPU was the NServiceBus code that looks for a message in the queue, though I find that a bit hard to believe. Send-only mode prevents NServiceBus from looking for messages in the queue.

Udi Dahan
  • 11,932
  • 1
  • 27
  • 35