My geocoding service instance continues to utilize a high percentage of memory, even after the process has returned results and should be done running. The only way I have found to reduce it thus far is to restart the server. Is this normal practice? Should it be running this way or is there a way to have it let go of its hold on memory? I am thinking either the usage time out setting or the recycling setting?
The server in question is currently running with 16GB memory. It is run in a virtual environment.
I have the current geocoding service set up with a Min and Max of 4 instances per machine.
Max time a client can use the service is 36000 seconds. (This was increased due to the potential of large tables that might be submitted for geocoding. Should this be reduced?)
Max time to wait is 60 seconds.
Max time an idle instance can be kept running is 1800 seconds. (The instances appear to stay active beyond this setting so I don't think this is the issue.)
By default, I have the instance recycle set at 24hrs. Can this be changed to force the instances to recycle after 30 mins? Would this create the change I am looking for?
Hey @ghaskett_aaic the behavior you are witnessing is expected behavior. Essentially what is occurring is caching and/or batch-geocoding.
When utilizing the GeocodeServer the input/output will be cached so when you input an address/place/etc it will have those results readily available to provide you a faster response. The results are cached/stored in memory and will continue to do this until a ArcGIS Server restart OR recycle interval time is reached (default timing is 24 hours).
Batch-Geocoding will flex the memory consumption about 2x the memory total of an idle GeocodeServer ArcSOC (example if the service while idle is about 1.2gb, and batch-geocoding is enabled, default threads is 4, you would see the memory up around 2ish GB when batch geocoding is done).
Best course of action in my opinion would be to reduce the recycle interval to something a little more frequent like every hour or so. This should help keep memory consumptions down. Having 4 instances running that are heavier GeocodeServices with only 16GB of memory can make things tight for resources.