Disponibilidad y Utilización de ArcSOC
Optimizar la disponibilidad y utilización de la instancia ArcSOC para su servicio es una buena estrategia para ayudar a los usuarios a obtener tiempos de respuesta rápidos y menores tiempos de espera en sus solicitudes dinámicas a su Sitio. También puede beneficiar la utilización de recursos del servidor como la memoria, ya que el servicio no está ejecutando muchas instancias que nunca usará.
Pero optimizar el número mínimo y máximo de instancias para sus servicios dedicados no es un trabajo de una sola vez. Los patrones de uso de sus servicios pueden cambiar con el tiempo, por lo que la tarea de recopilar esta información es algo que querrá revisar periódicamente como administrador GIS.
Antes de profundizar en cómo observar las estadísticas de actividad de instancias ArcSOC, revisemos algunos detalles clave de los dos tipos de servicios basados en ArcSOC en ArcGIS Server y cómo se relacionan con esta discusión:
Nota: El tiempo de espera es la duración que la solicitud pasa en una "cola" en el servidor hasta que una instancia ArcSOC está disponible para comenzar a trabajar en ella.
Servicios del Grupo de Instancias Dedicadas
Los servicios dedicados (por ejemplo, servicios no alojados y no compartidos) son un recurso fundamental de ArcGIS en implementaciones, ya que muchas aplicaciones dependen de capacidades como geoprocesamiento, edición Branch Version y flujos de trabajo Utility Network (todos los cuales requieren servicios dedicados).
Si bien tales servicios son muy versátiles y son un pilar importante en ArcGIS debido a la funcionalidad que proporcionan, como administrador GIS debe examinar, ajustar y configurar periódicamente el número de instancias ArcSOC (mínimo y máximo) para aprovechar al máximo sus recursos disponibles a medida que su Sitio y usuarios crecen.

Para aprender más sobre las instancias ArcSOC vea: Entender las instancias del servicio
Limitaciones de los Servicios del Grupo de Instancias Compartidas
Las instancias compartidas del servicio son geniales! Realmente cambian las reglas del juego para ayudar a los administradores a gestionar la demanda de muchos servicios con recursos finitos. Sin embargo, sus restricciones y requisitos limitan qué capacidades del servicio pueden usarse con ellas. Por ejemplo, geoprocesamiento, edición Branch Version y Utility Network actualmente no son compatibles a través de servicios compartidos (ni a través de servicios alojados). Esto deja los servicios dedicados como la única opción para dicha funcionalidad.
Disponibilidad Configurada de Instancia ArcSOC vs Demanda de Instancia
Para servicios que son muy populares, críticos y/o tienen el requisito de ejecutarse bajo el tipo de servicio dedicado, entender la configuración óptima de instancias es importante por varias razones. Si el número máximo de instancias activas es demasiado alto, se desperdicia memoria (así como costo). La sobreasignación de instancias ArcSOC es un caso importante pero único ya que su impacto no aparecería solo en el análisis de tiempos de respuesta.
Alternativamente, tener el máximo demasiado bajo puede afectar el rendimiento (en forma de mayores tiempos de respuesta y tiempos de espera más largos) ya que los usuarios podrían estar esperando frecuentemente a que una instancia ArcSOC ya ocupada se libere.
Por supuesto, establecer el mínimo y máximo de instancias en valores diferentes también tiene un compromiso. Para servicios críticos donde el rendimiento es primordial, hacer que la solicitud del usuario espere mientras se inicia una instancia puede consumir tiempo y afectar el rendimiento. Por lo tanto, para un rendimiento predecible en servicios esenciales, se recomienda establecer el número mínimo y máximo de instancias al mismo valor.
Como se indica en Introducción a las instancias del servicio:
Por lo tanto, es importante para los administradores de ArcGIS Server monitorear el número de instancias que su sitio está ejecutando y limitar las instancias en ejecución cuando el rendimiento se ve inhibido por el uso de memoria.
Configurar la disponibilidad del servicio (a través del mínimo y máximo de instancias) y el impacto que esas configuraciones tienen según la demanda del usuario sobre el servicio es clave para un Sitio que funcione óptimamente. Existe una relación mutua entre configurar la disponibilidad del servicio (a través del mínimo y máximo) y el efecto directo que esto tiene sobre las solicitudes entrantes a un servicio dedicado. Aunque encontrar la configuración óptima es una tarea continua, existen algunas herramientas y recursos para ayudar a los administradores a enfrentar este desafío.
Informe del Servicio ArcGIS Server
El Informe del Servicio de ArcGIS Server (introducido en 10.1) es una de esas joyas menos conocidas del REST Admin API. Este recurso puede ayudar a monitorear un Sitio proporcionando un resumen configurable de todos los servicios en una carpeta. Generalmente es una solicitud rápida (dependiendo del número de servicios en la carpeta solicitada).
La sección estadísticas del servicio por instancia en la respuesta devuelta es extremadamente valiosa ya que lista detalles sobre las instancias ArcSOC (mínimo, máximo, ocupadas) en todo el despliegue (por ejemplo, el Sitio ArcGIS Server).
Al consultar periódicamente este endpoint, uno puede obtener información actualizada al segundo sobre la configuración de instancias del servicio versus la demanda... mientras sucede. Con tal información, se pueden tomar mejores decisiones sobre optimización de recursos máquina y servicio. A su vez, esto puede ayudar a mejorar los tiempos de respuesta y reducir los tiempos de espera.
Nota: En ArcGIS Server, las estadísticas del servicio por instancia y la página Estadísticas en Manager son recursos diferentes aunque proporcionan vistas similares del mismo dato. Las estadísticas del servicio ofrecen acceso bruto a los valores por instancia (a nivel Sitio y por máquina) así como más detalle. La página Estadísticas es una interfaz para crear informes a partir de parte esa información.
Automatizando la Recolección del Informe del Servicio con Soccer
Cualquier script, programa o herramienta que observe regularmente el endpoint Informe del Servicio en la carpeta deseada sería suficiente. Sin embargo, si busca una herramienta gratuita existente entonces se recomienda Soccer.
(Arc)SOC ScannER o Soccer es una utilidad para escanear y leer las estadísticas de los servicios en una carpeta específica de ArcGIS Server. Analiza los datos recopilados y los escribe en un archivo CSV para análisis posterior adicional (por ejemplo, crear gráficos en una hoja electrónica para visualizar el uso). Aprovecha el recurso Informe del Servicio REST Admin en ArcGIS Server para recopilar esta información. El objetivo original de soccer era capturar la salida del endpoint informe específico para una carpeta en ArcGIS Server y guardar las estadísticas por instancia ArcSOC (por ejemplo, Ejecutando, Ocupado, Máximo, etc.) para cada servicio.
Actualmente soccer es solo una utilidad línea-de-comandos. Está disponible en tiempo de ejecución portátil .NET 6.0 para Windows (win-x64), Linux (linux-x64) y macOS (osx-x64).
Para simplificar, ejecutar soccer solo requiere 3 entradas (otros parámetros pueden pasarse para extender funcionalidad):
soccer.exe -s "[https://ArcGISServer/ServerWebAdaptor]" -f [FolderToScan] -t "[PreGeneratedArcGISToken]"
Por ejemplo:
soccer.exe -s "https://gisserver.domain.com/server" -f "Gas" -t "APLeyWOcKZp9stZ_C01DQ.."
Nota: Un token pre-generado de ArcGIS Server puede obtenerse desde Portal. Normalmente, la URL generateToken es: https://gisserver.domain.com/portal/sharing/rest/generateToken y la URL de la Webapp sería entonces: https://gisserver.domain.com/server/admin. Establezca el valor de Expiración a algo apropiado para la duración esperada de su monitoreo.
Salida estándar mientras se ejecuta desde una ventana de comandos:
Conectado a: "https://gisserver.domain.com/server " (Gas)
Presione Ctrl-C dos veces para detener...
Durmiendo 5 segundos...
Cuando se ejecuta, soccer se conecta al endpoint Service Report de la carpeta ArcGIS Server especificada, recopila los datos, los escribe en un archivo CSV local y luego duerme. Después de que transcurre la duración del sueño, repite el proceso. Soccer seguirá recopilando hasta que el proceso sea detenido manualmente (Ctrl-C).
Nota: Para recopilar en la carpeta raíz de ArcGIS Server, use cualquiera de: -f "/" o -f ""
Analizando el archivo CSV
Contenido de ejemplo visto desde un visor de texto simple:
DateTime,Epoch,IntervalSeconds,Host,Folder,ServiceName,Type,Provider,Running,Busy,Maximum,Free,NotCreated,Initializing,Transactions,TotalBusyTime,ServicesCollected,ResponseTimeMilliseconds,ContentLength,ConfiguredState,RealTimeState,Message
5/2/2023 1:12:45 AM,1682989965310,5,gisserver.domain.com,Gas,Gas_Utility_Network,MapServer,ArcObjects11,32,0,32,32,0,0,0,0,2,121.6224,6065,STARTED,STARTED,success
5/2/2023 1:12:45 AM,1682989965310,5,gisserver.domain.com,Gas,Landbase_PostgreSQL,MapServer,ArcObjects11,32,0,32,32,0,0,0,0,2,121.6224,6065,STARTED,STARTED,success
5/2/2023 1:12:50 AM,1682989970469,10,gisserver.domain.com,Gas,Gas_Utility_Network,MapServer,ArcObjects11,32,0,32,32,0,0,0,0,2,117.901,6065,STARTED,STARTED,success
5/2/2023 1:12:50 AM,...
Nota: Por diseño las columnas como IntervalSeconds y ResponseTimeMilliseconds mostrarán valores duplicados si existe más de un servicio en la carpeta observada.
Los datos recopilados son un CSV típico pero hay algunos campos importantes que serán útiles para analizar rápidamente la actividad ArcSOC de nuestro(s) servicio(s) de interés:
- IntervalSeconds
- ServiceName
- Running
- Busy
- Maximum

Abriendo el archivo CSV en una hoja de cálculo se pueden filtrar fácilmente otros servicios que residen en la misma carpeta mediante la columna ServiceName. Los valores IntervalSeconds , Running , Busy , Maximum pueden entonces graficarse para visualizar (por ejemplo con el gráfico Scatter with Smooth Line ) y mostrar la configuración de instancias versus la demanda entrante. En este caso el servicio Gas_Utility_Network fue configurado con instancias min/max de 32/32.

El gráfico "pulido" a continuación:

Nota: Maximum y Running representan respectivamente el máximo y mínimo de configuración de instancias del servicio ArcSOC. En este caso Running tiene los mismos valores y está graficado "detrás" de Maximum. Busy representa el número de instancias activas (debido a solicitudes de usuarios) en todas las máquinas del Sitio.
El "objetivo" de ajuste y optimización en este caso sería evitar que los valores Busy alcancen constantemente Maximum. Si esto ocurriera significaría que no había suficientes ArcSOCs disponibles para que el servicio satisfaga la demanda del usuario ya que las instancias siempre estaban ocupadas. Las solicitudes probablemente experimentarían tiempos de respuesta y espera incrementados en el proceso. Si las solicitudes esperan demasiado tiempo en el sistema expiran (normalmente después de 60 segundos). Tener muchas expiraciones afectaría negativamente la experiencia del usuario.
Basado en las observaciones durante esta duración monitoreada los valores crecientes y decrecientes en la columna Busy no se acercaron al número máximo de instancias disponibles... lo cual desde una perspectiva fue bueno. Sin embargo esto también indicó que había un número medible de instancias corriendo y consumiendo memoria pero sin ser usadas... lo cual no era ideal.
Para optimizar recursos del sistema en adelante la configuración de instancias para este servicio podría haberse establecido a un valor menor más cercano al uso pico esperado (por ejemplo entre 18 – 24).
- Usar 18 para conservar memoria con potenciales casos donde usuarios esperen más tiempo para que sus solicitudes sean atendidas
- Usar 24 para favorecer rendimiento sobre uso de memoria
Reflexiones finales
Tener una configuración "optimizada" para el mínimo y máximo número de instancias no garantiza que los usuarios nunca experimenten rendimiento lento. Las necesidades y hábitos del usuario cambian con el tiempo por lo que monitorear esta información debe hacerse periódicamente.
En el mundo real existen condiciones donde aún se pueden encontrar tiempos de espera en servicios incluso con suficientes instancias disponibles y abundantes recursos del sistema. No es realista eliminar completamente los tiempos de espera pero sí es más práctico reducirlos. Optimizar las instancias del servicio es algo que los administradores pueden controlar directamente y que impacta los tiempos de espera.
Entender y evaluar periódicamente la configuración de instancias ArcSOC (para servicios dedicados) y su relación con la demanda del usuario es clave para ayudar a los administradores GIS a planificar mejor y gestionar su Sitio optimizando rendimiento y utilizando recursos eficientemente.