For the last 3 months we suffer from many problems on our ArcGis-Servers.
The main problem is our architecture which planned on 4-cores (dual) + 12 GB RAM, but the main problem is that our server holds Win2003-32bit, which can handle only 4GB RAM.
This lack of 8GB causes us many page-faults. our SOC.exe causes our server to hold the server on 4 GB RAM permanently. (which means 100%)
Of course That we first need to extend our architecture to have more Spatial-Servers to deal the pressure but it will take time till buying and installing new servers, in the meanwhile we are trying to figure out creative ways to decrease the RAM Usages.
Yesterday Mody (from Systematics, ESRI's representative in Israel) sent me this link:
http://webhelp.esri.com/arcgisserver/9.3/dotNet/index.htm#tuning_services.htm (read the recycle section)
The article is talking about the 9.3 version (while we are using the 9.2 sp1) but it still help me understand something about how the people at Redland think.
Quote from the Recycle section: "Recycling destroys and re-creates all running instances of a service, whether or not those instances are above the minimum specified. To periodically return the number of running instances to the minimum specified, the service must be stopped and restarted."
It says that the recycle:
1) Will re-create all instances - which means that the "in use" number will be set to 0 - on every recycle.
2) It won't Change the number of "available instances" to the minimum (for example if we set minimum=4 and maximum=8, and before recycle the available=5, after recycle it will still be on 5)
Pros
- ESRI's idea says that If your machine sometime had 5 users instead of the 4 you planned - so the machine needed to create the new instance. Such scenario can happen again, so They won't kill the instance at your recycle. and the next time you will need the 5th instance all the machine will have to do - is take it (without paying the creation time)
Cons
- Machines that holds many types of Server-Objects and each of them will grow up above its minimum, it will cause the machine to work very slow, cause each instance take more memory, While the idea that the 5th user will return it more obvious that not all server-objects instances will be back to their high level usages.
More instance -> Needed more CPU, even if they are not in use -> machine will work slower even with no less users.
My New Feature request:
I would like to have recycle-preferences\options, For example: I would like to choose between two types of recycle:
The first type - recycle and re-init the available instance to minimum.
The second type - recycle only. (like the one exist today)
Moreover, I would like to set more than one recycle item per server-object.
For Example:
I can set two recycle items: the first recycle will be twice a day and won't change the available instances(the second type), while the second type will be once a week, and will set the available instances to the minimum.
Enjoy.