- Application server
- ArcGIS for Server 10.3
- ~13 MapServices with ~20 layers each. Dynamic layers/symbology enabled on each services
- ArcGIS JS API based web application consuming these services as ArcGISDynamicMapServiceLayer
- User is able to view map layers either from DEFAULT version or named GDB version (“gdbVersion” parameter used in JS API)
- DB Server
- MS SQL Server 2014 SP1 and also 2012
- Enterprise geodatabase 10.3
- ~50 tables + ~50 featureClasses. Geometry storage type is Microsoft Geometry
- Part of featureClasses are arranged in datasets
- Part of tables and featureClasses are registered as versioned
Serious performance degredation when accessing MapServer/ExportMap and using “gdbVersion”-parameter with named version. Measured from browser side these REST calls can be something like 500ms vs 5000ms. Our web application is consuming 10+ services with named gdb version and this effect becomes then an issue. It is also keeping ArcGIS Server busy for several seconds for single user’s map draw. This leads again to server load issue when 2+ “very active” users are zooming the map.
We also did rough measurement of net traffic outbound DB server in both cases. Using map services with gdbVersion –parameter net traffic increases to level about 5 to 10 times compared to not using named version.
For comparison, this same database is accessed and tested with ArcMap as client. In case of ArcMap, loading times of data are constant with DEFAULT –version vs. named version. Also net traffic keeps in same level.
Conclusion so far is that ArcGIS Server is accessing named GDB version with some different approach as ArcMap. We have done some query tracing in MS SQL –level. We can see that using named version in this case adds quite much additional queries against GDB internal tables. Until now it is unclear what is causing the additional net traffic.
Is this behavior documented somewhere (ArcGIS Server / Geodatabase)?
Is there some way to speed up fetching versioned data via ArcGIS Server?
Can someone provide us some documentation how to scale environment / map services to support load of ~100 users?