Archivos CSV de Extensión de Consulta- Contiene los datos de prueba generados<\/LI>
- Cada línea está compuesta por los componentes dinámicos de una solicitud al servicio de entidades<\/LI>
- Un archivo para cada Nivel de Escala solicitado<\/LI><\/UL><\/LI><\/UL>
<\/span><\/P>Desde el panel Catálogo, cargue la clase de entidad bbox_36112 en el mapa actual en ArcGIS ProEsta salida es muy similar a los datos de la herramienta Generate Bounding Boxes<\/LI><\/UL><\/LI>En este ejemplo, los cuadros generados aleatoriamente están en rosaEstas áreas representan la resolución de pantalla de un usuario que solicita datos del servicio de entidades<\/LI><\/UL><\/LI><\/UL>
<\/span><\/P>Ahora, desde el panel Catálogo, cargue la clase de entidad query_extents_36112 en el mapa actual pero detrás (debajo) de los datos bbox_36112<\/LI>En este ejemplo, las cajas de la cuadrícula de mosaicos de consulta están en verdeEstos mosaicos corresponden a un área en el mapa para la cual los bbox están solicitando datos<\/LI><\/UL><\/LI><\/UL>
<\/span><\/P>Acercarse al mapa puede proporcionar una mejor comprensión de la relación entre estos dos conjuntos de datos<\/LI>Como se ve en el mapa a continuación, algunos bbox están ligeramente desplazados entre sí pero aún comparten un mosaico común del grid debajo de ellos<\/LI>Las coordenadas de estos mosaicos de consulta (por ejemplo, desde la clase de entidad query_extent) son las que irán a los archivos CSV y finalmente a la prueba de carga JMeter<\/LI><\/UL>
<\/span><\/P>Mirar más cerca los bbox revela detalles sobre su composición respectiva de consultaPor ejemplo, algunos bbox podrían requerir 12 mosaicos "subyacentes" para cumplirse, otros 15 o 20<\/LI>Como se ve en el mapa a continuación, el bbox resaltado en negro requiere 12 mosaicos específicos coloreados en rojo<\/LI><\/UL><\/LI><\/UL>
<\/span><\/P> Nota: El diseño del grid de mosaicos del servicio de entidades es una de sus fortalezas clave ya que se presta a la repetibilidad. Esta repetibilidad puede aprovecharse con caching en un despliegue para mejorar la escalabilidad. Esto no es posible con export map.<\/STRONG><\/FONT><\/P>Examinar los archivos CSV generados revelará los resultados finales de esta transformación<\/LI>Ver el archivo query_extents_36112.csv en un editor de texto debería mostrar algo similar a lo siguienteDependiendo del lanzamiento de Load Test Tools, los archivos CSV podrían estar ordenados por la columna operationid<\/LI><\/UL><\/LI><\/UL>
<\/span><\/P>Dependiendo del lanzamiento de Load Testing Tools, la línea puede o no estar agrupada por la columna operationid<\/SPAN><\/LI>La comprensión del operationid, en este caso, es un concepto importante para las pruebas ya que cada operación representa una acción de navegación (por ejemplo, un paneo o zoom)
- Desde el punto de vista de JMeter, una operación es lo mismo que una transacción
color="#FF0000">Nota: Los JSR223 Samplers que usan Groovy generalmente se ejecutan rápidamente y añaden muy poca sobrecarga a la prueba
Bucle de Operación y Población de Parámetros
Con un id de operación elegido, el enfoque se convierte en la lógica del bucle donde la prueba buscará el número de consultas de servicios de características que componen la transacción. A partir de ahí, usará un tercer conjunto de JSR223 Samplers para poblar los parámetros de las solicitudes asociados al id de operación seleccionado previamente con cada iteración en el bucle.
- Hay un JSR223 Sampler para cada escala de mapa que llena las variables asociadas de JMeter basándose en el id de operación y el valor de iteración
- Estos elementos luego se convierten en pares clave/valor que son recogidos por la Solicitud HTTP
- Los valores de iteración son rastreados por un Elemento Configurador Contador
- Estos JSR223 Samplers no necesitan ser editados para ejecutar la prueba
- Cada Controlador de Bucle, Contador, JSR223 Sampler y objetos de Solicitud HTTP están todos colocados dentro de un Controlador de Transacción correspondiente para separar lógicamente los elementos para cada escala de mapa

Solicitud HTTP
Esencialmente, toda la lógica de prueba anterior existe solo para este componente de la prueba. Aquí, el objeto Solicitud HTTP de JMeter puede leer las variables de JMeter para parámetros específicos clave/valor que han sido poblados por el JSR223 Sampler inmediatamente antes.
Dado que este enfoque es altamente programático, ¡solo hay una Solicitud HTTP por escala de mapa! Tal diseño favorece la mantenibilidad.

Nota: Este enfoque de prueba también funcionaría para servicios tradicionales de capas de características no alojadas. Sin embargo, estos servicios no tienen las mismas optimizaciones en los parámetros de solicitud que los servicios alojados como maxAllowableOffset y quantizationParameters. Estas opciones simplemente tendrían que eliminarse de la Solicitud HTTP.
Configuración del Grupo de Hilos
El Plan de Prueba JMeter está configurado actualmente para una prueba relativamente corta de 10 minutos. En términos generales, los servicios alojados funcionan bien, por lo que habrá mucho rendimiento dentro de cada paso (1 minuto por paso) así como en toda la prueba.
- Diferentes entornos y datos pueden requerir una configuración alternativa para lograr los resultados deseados, ajuste según sea necesario

Validando el Plan de Prueba
Como buena práctica, siempre es buena idea validar los resultados antes de ejecutar la prueba real de carga.
- Use el listener View Results Tree para ayudar con la validación
- El Plan de Prueba incluye un Listener View Results Tree pero está deshabilitado por defecto
- Habilítelo para ver los resultados
- Desde la GUI, inicie la prueba
Transacciones
- Seleccione una de las Transacciones "HFS"
- Los resultados deberían parecerse a lo siguiente:

- En este ejemplo, las transacciones listadas arriba: HFS (mapscale: 72224), HFS (mapscale: 36112), y HFS (mapscale: 144448) todas completaron exitosamente
- El resultado del Sampler lista algunos detalles más
- Aunque cada Transacción envió una solicitud HTTP por extensión de consulta característica, la prueba JMeter cuenta el Sampler como parte de la operación
- Los JSR223 Samplers añaden muy poca sobrecarga a la Transacción aunque duplican el número de muestras, esto es solo un detalle a tener en cuenta
- Eche un vistazo rápido al Tamaño en bytes
- En este ejemplo, el Tamaño de la Transacción fue casi 65KB lo que sugiere que se estaba devolviendo algún dato y las respuestas no estaban "vacías"
Solicitudes
- Expanda una de las Transacciones "HFS"
- Seleccione una de las solicitudes https
- Los resultados deberían parecerse a lo siguiente:

- En este ejemplo, la solicitud select completó exitosamente
- Eche un vistazo rápido al Tamaño en bytes
- En este ejemplo, el Tamaño de la Solicitud fue aproximadamente 5KB lo que sugiere que se estaba devolviendo algún dato y las respuestas no estaban "vacías" (por ejemplo, 1500 bytes)
- El ContentType también es importante
- Según los parámetros en el Plan de Prueba, el formato solicitado es pbf que devuelve application/x-protobuf
- Solicitar protocol buffers es una buena práctica ya que optimiza la carga útil
- El formato resultante es binario y no puede verse fácilmente sin ayuda adicional que no se cubre en este Artículo
Nota: Los servicios feature (incluidos los servicios feature alojados) se renderizan en el cliente (no en el servidor como export map). Aunque Apache JMeter es un cliente (de prueba), no renderiza las respuestas del servidor mediante JavaScript como un navegador web.
Ejecución de la Prueba
La prueba de carga debe ejecutarse del mismo modo que un Plan típico de Prueba JMeter.
Consulte el script runMe.bat incluido con el proyecto roads_hfs1.zip para un ejemplo sobre cómo ejecutar una prueba según lo recomendado por el equipo Apache JMeter.
- El script runMe.bat contiene una variable jmeterbin que deberá configurarse con el valor apropiado para su entorno
Nota: Siempre se recomienda coordinar la hora y duración del inicio de la prueba con el personal adecuado. Esto asegura un impacto mínimo a usuarios y otros colegas que también puedan necesitar usar el Sitio ArcGIS Enterprise. Además, esto ayuda a prevenir sistema noise de otras actividades y usos que puedan "contaminar" los resultados.
Informe JMeter
Curvas de Rendimiento (Throughput)
- El Informe generado automáticamente por JMeter puede proporcionar información sobre el rendimiento (throughput) de las transacciones HFS bajo carga
- Las transacciones no HFS han sido filtradas manualmente
- En este caso, el pico máximo del rendimiento para las operaciones HFS fue aproximadamente 16.5 transacciones/segundo
- Dado que hubo 3 transacciones HFS, esto equivale a casi 50 transacciones/segundo (o 178,200 transacciones/hora)

Nota: Cada una de las Transacciones HFS naturalmente tendrá un rendimiento similar ya que su respectiva ejecución en la prueba tuvo igual peso.
Curvas de Rendimiento (Performance)
- El Informe generado automáticamente por JMeter puede proporcionar información sobre el rendimiento (performance) de las transacciones HFS bajo carga
- Las transacciones no HFS han sido filtradas manualmente
en este caso, las transacciones HFS para todas las escalas fueron sub-segundo (menos de 1 segundo)- Incluso hacia el final de la prueba, bajo la carga más pesada, el tiempo promedio de respuesta fue inferior a 225 ms o 0.225 segundos