Condividi tramite


MSMQ and Terminal Server

I received an emailed question about this combination and thought I would do some research to see if there was anything of interest to share.

First thing to cover is that each Terminal Server client does NOT get their own instance of MSMQ. The server will have one single MSMQ service (assuming it is not clustered) and that will manage all messaging activity generated by the clients. Therefore each TS client sees the same queues as each other which has both advantages and disadvantages:

  1. Multiple clients can use common queues for exchanging data between them or for load-balancing the incoming workload.
  2. A client sending and receiving messages from a common queue may be processing messages meant for other clients, possibly causing delays or data loss.

If messages are not for sharing then make sure there are client-specific queues created that they can use.

Second, Terminal Server optimises memory in a way that can impact MSMQ.

From 268230 "Scaling Out Versus Scaling Up with Intel Physical Addressing Extensions (PAE)"

  • Terminal Services attempts to maximize system page table entries at the expense of paged pool memory.

So you can expect to have a lower limit to the maximum volume of messages on a Terminal Server as MSMQ depends on available paged pool. This is discussed in greater detail in item 4 of my "Insufficient Resources" blog post.