Suspect a memory leak in EdgeTransport?

This issue comes up on occassion where we suspect that there's a memory leak of some sort in EdgeTransport. The process starts up, consuming only a couple hundred MB in private bytes and slowly, gradually grows consuming 4, 6, 8GB of ram and never releasing.

We see this most often with 3rd party agents that interop w/unmanaged modules. Load up performance monitor and add the following two counters

  • .Net CLR Memory/# Bytes in all Heaps/EdgeTransport
  • Process/Private Bytes/EdgeTransport

These two values won't necessarily hover around each other, however if you are seing huge increases in the Private Bytes over the managed # Bytes in all Heaps then chances are there's a 3rd party agent loaded on the server that references unmanaged modules. Nearly all of EdgeTransport is written in managed code so it's fairly rare to find a leak in EdgeTransport that isn't reflected in the managed heaps.

If you do see that, take a look at what agents are installed on the server with the Get-TransportAgent and/or Get-TransportPipeline cmdlets. Uninstall or at minimum, disable any 3rd party agents with Disable-TransportAgent AgentIdentity and restart the Microsoft Exchange Transport Service and monitor for leaks.