SenthilN-msft
Hello - Let me provide some background for this before clearing your concerns.
.NET Framework does not provide memory management out of the box for a process as it varies from application to application. So it is left up to the application developers to implement the memory management. As you mentioned Windows by default allocates 2 GB of memory for a process because only 2GB can be addressed in a 32-bit OS, which could be extended up to 3 GB by adding a switch.
In order to prevent the session server running out of memory, we have done some throttling to make sure the server remains stable. So when you continue to create session and not terminate them or if you pump more messages than session server could handle the messages will get queued up. In such cases, the memory consumption will grow. When it gets to certain memory threshold levels, we disable certain features and keep the critical functions working and also we log the warnings so that the operations engineer is aware of what is going on.
GetSessionIDs and GetActiveSessions (which are deprecated in CSF 3.0) are admin APIs and very memory intensive. We have addressed these issues in CSF3.0 very efficiently by providing a Search API using which you could search and terminate old sessions which are still hanging in there.
However Failed to send ReadMaps is something may not be related to this issue.
Also you don't have to set up multiple worker processes / recycling the worker processes. They aren't efficient. You need to make sure you are terminating the sessions which are not being used to keep your resources available.
If the problem persist after terminating the unused sessions, please provide the reading for the following performance counters
1. # of Active Sessions
2. Percent Fault
Thanks