Perf2025

Versión 14 (Emilio Penna, Lunes, 3 de Noviembre de 2025 12:06:46 -0300)

1 1
h1. Perf2025
2 1
3 1
4 1
5 1
6 4 Emilio Penna
h2. **Informe de Prueba de Carga – Sistema de Autenticación Shibboleth IdP**
7 1
8 2 Emilio Penna
**Fecha de la prueba:** *30/10/2025*
9 2 Emilio Penna
Ambiente de IdP de test
10 1
11 1
---
12 1
13 5 Emilio Penna
**1. Objetivo**
14 1
15 1
Evaluar el rendimiento del servicio de autenticación **Shibboleth Identity Provider (IdP)** ante múltiples solicitudes concurrentes, midiendo la cantidad de inicios de sesión procesados, la latencia promedio y el throughput alcanzado.
16 1
17 1
---
18 1
19 5 Emilio Penna
**2. Entorno de Prueba**
20 1
21 1
**Infraestructura:**
22 1
23 2 Emilio Penna
* **Servidor IdP:** (vmware) 4 vCPU, 4 GB RAM, Debian 11, Tomcat 9, Java 11 (amazon corretto)
24 2 Emilio Penna
* **Base de datos / Repositorio de identidad:** openldap
25 12 Emilio Penna
* **Proxy frontal:** Apache HTTPD con mod_jk
26 2 Emilio Penna
* **Versión del IdP:** Shibboleth IdP 4.3.3
27 1
28 14 Emilio Penna
* **Cliente de test: Notebook corriendo JMeter 5.6.3 (command line), java 17, ubuntu 24, 8cpu, 24gb ram, conectado en la misma red.
29 14 Emilio Penna
30 14 Emilio Penna
31 1
---
32 1
33 5 Emilio Penna
**3. Metodología**
34 1
35 2 Emilio Penna
La prueba se realizó utilizando **Apache JMeter 5.6.3**, con el script público proporcionado por el proyecto Shibboleth:
36 1
[https://shibboleth.atlassian.net/wiki/download/attachments/2494726900/shibboleth-unsolicited-sso-test.jmx?version=2&modificationDate=1435769963124&cacheVersion=1&api=v2](https://shibboleth.atlassian.net/wiki/download/attachments/2494726900/shibboleth-unsolicited-sso-test.jmx?version=2&modificationDate=1435769963124&cacheVersion=1&api=v2)
37 1
38 1
Dicho script está disponible en la página oficial del proyecto:
39 1
[https://shibboleth.atlassian.net/wiki/spaces/IDP30/pages/2494726900/Load+Testing+Contributed+Results](https://shibboleth.atlassian.net/wiki/spaces/IDP30/pages/2494726900/Load+Testing+Contributed+Results)
40 1
41 1
**Parámetros de la prueba:**
42 1
43 1
* **Herramienta:** Apache JMeter
44 1
* **Duración:** 5 minutos
45 1
* **Usuarios concurrentes (threads):** 50
46 1
* **Escenario:** autenticaciones repetidas utilizando el flujo SSO no solicitado
47 1
* **Archivo de usuarios:** 1.500 usuarios de prueba (CSV con usuario/contraseña)
48 1
49 1
---
50 1
51 5 Emilio Penna
**4. Resultados**
52 1
53 1
| Métrica                                 | Valor          |
54 6 Emilio Penna
| |  |
55 2 Emilio Penna
| Autenticaciones totales (5 min)         | *49995*       |
56 2 Emilio Penna
| Promedio de autenticaciones por segundo | *166*       |
57 2 Emilio Penna
| Latencia promedio                       | *284* ms    |
58 2 Emilio Penna
| Throughput promedio                     | *166* req/s |
59 2 Emilio Penna
| Errores o timeouts                      | *0*       |
60 4 Emilio Penna
| CPU promedio                            | *load average = 8*      |
61 4 Emilio Penna
| RAM utilizada                           | *3.6G*      |
62 1
63 1
---
64 1
65 5 Emilio Penna
**5. Conclusiones**
66 1
67 2 Emilio Penna
* El sistema Shibboleth IdP procesó satisfactoriamente 50.000 autenticaciones en 5 minutos bajo las condiciones de prueba.
68 1
* No se observaron errores significativos, y la latencia promedio se mantuvo dentro de valores aceptables para un entorno de autenticación.
69 1
* Los resultados reflejan el rendimiento en un entorno controlado, con un solo nodo y parámetros de carga definidos.
70 1
* Se recomienda repetir la prueba con distintas cantidades de threads o escenarios para obtener una curva de capacidad más completa.
71 1
72 8 Emilio Penna
Adjuntamos el resumen "Summary Report" de la prueba.
73 8 Emilio Penna
74 8 Emilio Penna
!50t-5min-1500user.png!
75 8 Emilio Penna
76 8 Emilio Penna
77 1
---
78 1
79 5 Emilio Penna
**Anexo – Reproducción de la prueba con JMeter**
80 1
81 1
A continuación, se detallan los pasos y ajustes necesarios para reproducir la prueba de carga utilizando el script público del proyecto Shibboleth.
82 1
83 5 Emilio Penna
**1. Obtención del script**
84 1
85 1
Descargar el script oficial desde:
86 1
[https://shibboleth.atlassian.net/wiki/download/attachments/2494726900/shibboleth-unsolicited-sso-test.jmx?version=2&modificationDate=1435769963124&cacheVersion=1&api=v2](https://shibboleth.atlassian.net/wiki/download/attachments/2494726900/shibboleth-unsolicited-sso-test.jmx?version=2&modificationDate=1435769963124&cacheVersion=1&api=v2)
87 1
88 5 Emilio Penna
**2. Corrección en la assertion**
89 1
90 1
El script requiere una modificación para funcionar correctamente con versiones recientes del IdP.
91 1
En la assertion **"POST Login Credentials"**, reemplazar la expresión:
92 1
93 6 Emilio Penna
<pre>
94 1
Set-Cookie: shib_idp_session=[0-9a-f]+;Path=/idp;HttpOnly
95 1
96 1
por:
97 1
98 1
Set-Cookie: shib_idp_session=[0-9a-f]+; Path=/idp;
99 6 Emilio Penna
</pre>
100 1
101 6 Emilio Penna
102 7 Emilio Penna
Es decir, eliminar `HttpOnly` y agregar un espacio antes de `Path`. Se puede observar ese elemento en la siguiente imagen:
103 9 Emilio Penna
!summary2.png!
104 1
105 5 Emilio Penna
**3. Configuración recomendada en JMeter**
106 1
107 9 Emilio Penna
En el **Thread Group** "Shibboleth Unsolicited SSO Test", agregar los siguientes *Listeners* (se ven en la imagen anterior):
108 1
109 1
* **View Results Tree**
110 1
* **Summary Report**
111 1
112 5 Emilio Penna
**4. Prueba inicial**
113 1
114 1
1. Ejecutar inicialmente la prueba con **1 thread** para verificar que el flujo funcione correctamente.
115 1
2. Revisar en *View Results Tree* que no existan errores.
116 1
3. Una vez validado, deshabilitar ese *Listener* antes de la prueba completa.
117 1
118 1
**5. Ejecución por línea de comando**
119 1
120 13 Emilio Penna
Para ejecutar la prueba sin interfaz gráfica (recomendado si son cargas altas):
121 1
122 6 Emilio Penna
123 6 Emilio Penna
<pre>
124 1
/opt/jmeter/apache-jmeter-5.6.3/bin/jmeter -n -t shibboleth-unsolicited-sso-test.jmx -l result.jtl
125 6 Emilio Penna
</pre>
126 6 Emilio Penna
127 1
128 5 Emilio Penna
**6. Archivo de usuarios**
129 1
130 10 Emilio Penna
El script requiere un archivo CSV con usuarios y contraseñas para la autenticación. La ruta al archivo con usuarios y contraseñas debe indicarse en el elemento "CSV Get Users/Passwords"
131 1
En esta prueba se utilizó un archivo con **1.500 usuarios de prueba**.