En esta entrada veremos cómo hacer benchmarking de una aplicación web con Siege en Ubuntu y PowerShell Universal.
Siege es una herramienta de pruebas de carga HTTP y HTTPS para Linux. Puede ejecutar solicitudes web con un número configurable de hilos. En modo benchmark, se ejecuta lo más rápido posible, sin retrasos.
Estoy usando Ubuntu 20.04 en WSL2 sobre un host Windows 11. Suele usarse Siege para probar el rendimiento de PowerShell Universal, así que esa es la aplicación bajo prueba aquí.
Instalar Siege
Para instalar Siege en Ubuntu, ejecute los siguientes comandos:
sudo apt update -y
sudo apt install siege -y
siege --version
Obtener la dirección IP del host
Para que la imagen de Ubuntu alcance el host Windows, recupere la IP del host desde /etc/resolv.conf. El siguiente comando imprime la dirección IP directamente en el terminal:
grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'
172.18.224.1
Su IP será distinta; use el valor que devuelva su máquina en los pasos siguientes.
Iniciar la aplicación web
Tengo PowerShell Universal instalado como servicio, escuchando en su puerto predeterminado 5000. Para esta prueba, cree un endpoint de API con New-PSUEndpoint:
New-PSUEndpoint -Url /benchmark -Method GET -Endpoint {
"Hello, world"
}
Puede invocar el endpoint en local con PowerShell:
Invoke-RestMethod http://localhost:5000/benchmark
Desde WSL2, invoque el mismo endpoint con wget, usando la IP de la máquina host del paso anterior:
wget http://172.18.224.1:5000/benchmark
--2022-04-13 07:21:35-- http://172.18.224.1:5000/benchmark
Connecting to 172.18.224.1:5000... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/json]
Saving to: ‘benchmark’
benchmark [ <=> ] 12 --.-KB/s in 0s
2022-04-13 07:21:35 (1.95 MB/s) - ‘benchmark’ saved [12]
Ejecutar un benchmark con Siege
Para ejecutar Siege en modo benchmark, use el indicador -b y pase la URL que desea medir. De forma predeterminada, se inicia con 25 usuarios concurrentes:
siege -b http://172.18.224.1:5000/benchmark
Dejé el benchmark en marcha un rato y luego pulsé Ctrl+C para detenerlo. Esta ejecución duró unos 67 segundos a aproximadamente 1.000 solicitudes por segundo:
** SIEGE 4.0.4
** Preparing 25 concurrent users for battle.
The server is now under siege...^C
Lifting the server siege...
Transactions: 72893 hits
Availability: 100.00 %
Elapsed time: 67.34 secs
Data transferred: 2.64 MB
Response time: 0.02 secs
Transaction rate: 1082.46 trans/sec
Throughput: 0.04 MB/sec
Concurrency: 24.96
Successful transactions: 72893
Failed transactions: 0
Longest transaction: 0.51
Shortest transaction: 0.01
Puede aumentar el número de hilos de solicitudes HTTP concurrentes con el parámetro -c:
siege -c 125 -b http://172.18.224.1:5000/benchmark
Conclusión
En esta entrada hemos visto cómo instalar Siege en Ubuntu dentro de WSL2, exponer un endpoint sencillo de PowerShell Universal y ejecutar benchmarks de Siege contra él desde Linux.
¿Quiere probarlo usted mismo? Obtenga PowerShell Universal en el centro de descargas.

Adam Driscoll