Out of Memory Errors

Generally the most common performance problems are related to Out Of Memory errors. Out Of Memory errors can occur at any location in the code, therefore, you need to eliminate those in order to determine if there are any separate issues.

To begin troubleshooting for Out of Memory errors, do the following:

  1. Open the AgilePoint Server Configuration and reduce the Thread Pool Size to (e.g. 50) and the Database Connection Pool Size to (e.g. 100). If that doesn't eliminate the Out Of Memory errors, try reducing the sizes even further. Remember that increasing pool and queue sizes to increase multithreading only improves performance up to the point that the server's hardware can support the concurrent processing. Beyond that, it becomes detrimental to both performance (and potentially to server stability).
  2. Examine what other applications are running on the server and try to free up as much of the server's memory as possible for AgilePoint's use.
  3. Make sure there are no other applications using the Application Pool for AgilePoint Server.
  4. Out Of Memory errors could be due to an overloaded Database server, poor network performance, or other reasons. Check the Database server's stability and logs to see if anything is wrong with it. If the Database server is a performance bottleneck, it could potentially cause in-process work to build up on the AgilePoint server. To resolve this issue, try moving from a 32-bit to 64-bit server, this will also enable the advantages of table partition.
  5. If the above steps don't resolve the Out Of Memory errors, try increasing the amount of physical memory, move from 32-bit to 64-bit server, or change other server configuration settings to prevent the server from becoming overloaded.

An expired trial license could also cause problems, because it may have caused a large amount of work to build up waiting for server processing. Once the key was replaced, if the server tries to concurrently process too much work (because of the configured settings), it could potentially cause Out Of Memory errors.

During very high load, server's may not recycle "unused" memory as quickly as at other times, so servers that have periods of very high load and high-memory allocation may run out of memory simply because they use up (i.e. allocate) memory faster than the server can recycle (i.e. de-allocate) the memory and make it available for use again.

Note: The amount of memory displayed by a Windows process in the Windows Task Manager does not necessarily reflect the amount of memory currently needed (or even being used) by that Windows process. If you are trying to measure how much memory a .NET-based application is actually using (i.e. the application's memory footprint) or allocating, you should see one of the many tutorials available online about how to do so accurately. There are also many products available (both commercial and free) specifically designed to assist in memory analysis.