Perf2025

Versión 10 (Emilio Penna, Lunes, 3 de Noviembre de 2025 11:36:57 -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 1
* **Balanceador / Proxy frontal:** Apache HTTPD con mod_proxy
26 2 Emilio Penna
* **Versión del IdP:** Shibboleth IdP 4.3.3
27 1
28 1
---
29 1
30 5 Emilio Penna
**3. Metodología**
31 1
32 2 Emilio Penna
La prueba se realizó utilizando **Apache JMeter 5.6.3**, con el script público proporcionado por el proyecto Shibboleth:
33 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)
34 1
35 1
Dicho script está disponible en la página oficial del proyecto:
36 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)
37 1
38 1
**Parámetros de la prueba:**
39 1
40 1
* **Herramienta:** Apache JMeter
41 1
* **Duración:** 5 minutos
42 1
* **Usuarios concurrentes (threads):** 50
43 1
* **Escenario:** autenticaciones repetidas utilizando el flujo SSO no solicitado
44 1
* **Archivo de usuarios:** 1.500 usuarios de prueba (CSV con usuario/contraseña)
45 1
46 1
---
47 1
48 5 Emilio Penna
**4. Resultados**
49 1
50 1
| Métrica                                 | Valor          |
51 6 Emilio Penna
| |  |
52 2 Emilio Penna
| Autenticaciones totales (5 min)         | *49995*       |
53 2 Emilio Penna
| Promedio de autenticaciones por segundo | *166*       |
54 2 Emilio Penna
| Latencia promedio                       | *284* ms    |
55 2 Emilio Penna
| Throughput promedio                     | *166* req/s |
56 2 Emilio Penna
| Errores o timeouts                      | *0*       |
57 4 Emilio Penna
| CPU promedio                            | *load average = 8*      |
58 4 Emilio Penna
| RAM utilizada                           | *3.6G*      |
59 1
60 1
---
61 1
62 5 Emilio Penna
**5. Conclusiones**
63 1
64 2 Emilio Penna
* El sistema Shibboleth IdP procesó satisfactoriamente 50.000 autenticaciones en 5 minutos bajo las condiciones de prueba.
65 1
* No se observaron errores significativos, y la latencia promedio se mantuvo dentro de valores aceptables para un entorno de autenticación.
66 1
* Los resultados reflejan el rendimiento en un entorno controlado, con un solo nodo y parámetros de carga definidos.
67 1
* Se recomienda repetir la prueba con distintas cantidades de threads o escenarios para obtener una curva de capacidad más completa.
68 1
69 8 Emilio Penna
Adjuntamos el resumen "Summary Report" de la prueba.
70 8 Emilio Penna
71 8 Emilio Penna
!50t-5min-1500user.png!
72 8 Emilio Penna
73 8 Emilio Penna
74 1
---
75 1
76 5 Emilio Penna
**Anexo – Reproducción de la prueba con JMeter**
77 1
78 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.
79 1
80 5 Emilio Penna
**1. Obtención del script**
81 1
82 1
Descargar el script oficial desde:
83 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)
84 1
85 5 Emilio Penna
**2. Corrección en la assertion**
86 1
87 1
El script requiere una modificación para funcionar correctamente con versiones recientes del IdP.
88 1
En la assertion **"POST Login Credentials"**, reemplazar la expresión:
89 1
90 6 Emilio Penna
<pre>
91 1
Set-Cookie: shib_idp_session=[0-9a-f]+;Path=/idp;HttpOnly
92 1
93 1
por:
94 1
95 1
Set-Cookie: shib_idp_session=[0-9a-f]+; Path=/idp;
96 6 Emilio Penna
</pre>
97 1
98 6 Emilio Penna
99 7 Emilio Penna
Es decir, eliminar `HttpOnly` y agregar un espacio antes de `Path`. Se puede observar ese elemento en la siguiente imagen:
100 9 Emilio Penna
!summary2.png!
101 1
102 5 Emilio Penna
**3. Configuración recomendada en JMeter**
103 1
104 9 Emilio Penna
En el **Thread Group** "Shibboleth Unsolicited SSO Test", agregar los siguientes *Listeners* (se ven en la imagen anterior):
105 1
106 1
* **View Results Tree**
107 1
* **Summary Report**
108 1
109 5 Emilio Penna
**4. Prueba inicial**
110 1
111 1
1. Ejecutar inicialmente la prueba con **1 thread** para verificar que el flujo funcione correctamente.
112 1
2. Revisar en *View Results Tree* que no existan errores.
113 1
3. Una vez validado, deshabilitar ese *Listener* antes de la prueba completa.
114 1
115 1
**5. Ejecución por línea de comando**
116 1
117 5 Emilio Penna
Para ejecutar la prueba sin interfaz gráfica:
118 1
119 6 Emilio Penna
120 6 Emilio Penna
<pre>
121 1
/opt/jmeter/apache-jmeter-5.6.3/bin/jmeter -n -t shibboleth-unsolicited-sso-test.jmx -l result.jtl
122 6 Emilio Penna
</pre>
123 6 Emilio Penna
124 1
125 5 Emilio Penna
**6. Archivo de usuarios**
126 1
127 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"
128 1
En esta prueba se utilizó un archivo con **1.500 usuarios de prueba**.