High memory usage with the .NET agent

Problem

After installing the .NET agent, you see an increase in Working Set memory usage in monitoring tools such as Windows Task Manager. The increase is usually about 100 MB per monitored application. This can occur on both physical and virtual machines.

Solution

This increased Working Set memory usage usually does not impact performance. Working Set memory is reserved by Windows on behalf of a particular app, but can be released at any time if another app needs the memory. This is normal and expected behavior for any Windows app (for more information, see the Cause section).

In rare cases, particularly for systems with limited RAM or many app pools, memory usage can impact performance. If your performance is affected, try one of these options:

  • Add more RAM to the machine.
  • Remove some application pools from the machine.
  • Monitor performance to see if the increased memory usage is actually impacting performance, since usage shown in Task Manager can be released and shared with other processes. See Cause, below.

Cause

The underlying cause is the way Windows itself anticipates and allocates memory per process. Windows allocates this memory as Working Set memory, which is memory the OS thinks the process might need. The OS can release the Working Set memory very quickly if another process needs it. Because memory allocation is decided by Windows, New Relic cannot reduce the amount of memory shown in use.

Usually this increase is not a problem unless there is a corresponding drop in performance, which usually only occurs if all of the available memory is occupied as Private Working Set memory. If the server is running low on memory, monitor your response times and transaction times to see if this memory usage is actually impacting performance. If there is no increase for a while then the memory usage is not a problem.

Working Set memory usage typically only causes issues on systems with limited RAM. On our test systems we see an increase of approximately 100 MB per monitored app or app pool. For example, an increase of 80% is notable when it's 80% of 64 GB, but perhaps less so when it's 80% of 4 GB. Similarly, the number of application pools being monitored affects usage: A single app pool will rarely significantly increase usage, but a system with 4 GB of RAM and 30 application pools might have issues.

For more help

Additional documentation resources include:

Join the discussion about .NET monitoring in the New Relic Online Technical Community! The Technical Community is a public platform to discuss and troubleshoot your New Relic toolset.

If you need additional help, get support at support.newrelic.com.