---
title: "Descubre el poder de oha: pruebas de rendimiento web de forma sencilla"
description: "Aprende a usar oha para realizar pruebas de carga en tu sitio web. Guía sencilla con ejemplos prácticos para medir el rendimiento, la capacidad de procesamiento y los tiempos de respuesta de tu sitio."
date: 2025-02-10
categories: ["tools"]
tags: ["load-tests"]
---

import YouTubeEmbed from "@components/widgets/YouTubeEmbed.astro";


El rendimiento de un sitio web es crucial para la experiencia del usuario y el SEO. En esta guía aprenderás a usar oha, una herramienta ligera de pruebas de carga HTTP, para medir el rendimiento de tu sitio web bajo carga. Tanto si eres desarrollador como propietario de un sitio, estas pruebas te ayudarán a entender las capacidades de tu web.

## ¿Qué es oha?

![oha](@assets/images/25/02/oha.webp)


[oha](https://github.com/hatoo/oha) (おはよう) es:
- Una herramienta moderna y ligera de pruebas de carga HTTP
- Escrita en Rust para un rendimiento óptimo
- Perfecta para pruebas rápidas de rendimiento web
- Con visualización de resultados en tiempo real

Ventajas principales:
| Característica | Ventaja |
|----------------|---------|
| Velocidad | Ejecución rápida con un uso mínimo de recursos |
| Simplicidad | Funciona con un solo comando |
| Salida visual | Métricas en tiempo real |
| Informes detallados | Estadísticas de rendimiento completas |


<YouTubeEmbed
  url="https://www.youtube.com/embed/iVcvbmY0pk8"
  label="Descubre el poder de oha: pruebas de rendimiento web de forma sencilla"
/>

## Instalación
Elige tu sistema operativo y sigue estos sencillos pasos:

### Linux:
```bash
cargo install oha
```

### MacOS:
```bash
brew install oha
```

### Windows:
```bash
winget install hatoo.oha
```

## Uso básico

### Comando de prueba sencillo:
```bash
oha https://yourwebsite.com
```

### Tabla de opciones comunes:
| Opción | Descripción | Ejemplo |
|--------|-------------|---------|
| -n | Solicitudes totales | oha -n 200 https://site.com |
| -c | Usuarios simultáneos | oha -c 50 https://site.com |
| -q | Solicitudes por segundo | oha -q 100 https://site.com |
| --no-tui | Desactivar la interfaz visual | oha --no-tui https://site.com |

### Interpretación de los resultados

Analicemos una salida típica:
```sh
Summary:
  Success rate: 100.00%
  Total:        0.6689 secs
  Slowest:      0.4123 secs
  Fastest:      0.0733 secs
  Average:      0.1557 secs
  Requests/sec: 299.0098
```

Métricas clave explicadas:
| Métrica | Qué significa | Valores adecuados |
|---------|---------------|-------------------|
| Tasa de éxito | Porcentaje de solicitudes correctas | Debería estar cerca del 100 % |
| Tiempo medio | Tiempo medio de respuesta | Menos de 1 segundo |
| Solicitudes/seg | Capacidad de procesamiento | Depende de tus necesidades |
| La más lenta | Peor tiempo de respuesta | No debería superar 3 veces la media |

### Distribución de los tiempos de respuesta
El desglose por percentiles muestra cómo rinde tu sitio en todas las solicitudes:
- Percentil 50 (mediana): experiencia de usuario normal
- Percentil 90: respuestas más lentas pero aceptables
- Percentil 99: peores escenarios


**Salida real:**

```sh
╰─❯ oha https://www.bitdoze.com
Summary:
  Success rate: 100.00%
  Total:        0.6689 secs
  Slowest:      0.4123 secs
  Fastest:      0.0733 secs
  Average:      0.1557 secs
  Requests/sec: 299.0098

  Total data:   2.08 MiB
  Size/request: 10.64 KiB
  Size/sec:     3.11 MiB

Response time histogram:
  0.073 [1]   |
  0.107 [144] |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
  0.141 [5]   |■
  0.175 [0]   |
  0.209 [0]   |
  0.243 [0]   |
  0.277 [0]   |
  0.311 [5]   |■
  0.345 [15]  |■■■
  0.378 [18]  |■■■■
  0.412 [12]  |■■

Response time distribution:
  10.00% in 0.0803 secs
  25.00% in 0.0847 secs
  50.00% in 0.0935 secs
  75.00% in 0.3010 secs
  90.00% in 0.3617 secs
  95.00% in 0.3813 secs
  99.00% in 0.4108 secs
  99.90% in 0.4123 secs
  99.99% in 0.4123 secs


Details (average, fastest, slowest):
  DNS+dialup:   0.0811 secs, 0.0488 secs, 0.1036 secs
  DNS-lookup:   0.0001 secs, 0.0000 secs, 0.0005 secs

Status code distribution:
  [200] 200 responses
```

## Escenarios básicos de prueba

1. **Comprobación rápida del estado**
```bash
oha -n 100 https://yoursite.com
```
Propósito: visión general rápida del rendimiento del sitio

2. **Prueba de carga**
```bash
oha -n 1000 -c 50 https://yoursite.com
```
Propósito: simular varios usuarios simultáneos

3. **Prueba de estrés**
```bash
oha -n 2000 -c 100 -q 200 https://yoursite.com
```
Propósito: encontrar los límites de rendimiento


## Ejemplos de pruebas del mundo real

### 1. Pruebas de endpoints de API
```bash
oha -n 500 -c 50 -m POST -T "application/json" -d '{"key":"value"}' https://api.yoursite.com/endpoint
```

Parámetros para probar una API:
| Parámetro | Descripción | Uso |
|-----------|-------------|-----|
| -m POST | Método HTTP | Para llamadas a la API |
| -T | Tipo de contenido | Especifica el formato de los datos |
| -d | Cuerpo de la solicitud | Envía datos |

### 2. Simulación de tráfico máximo
```bash
oha -n 2000 -c 100 --disable-keepalive https://yoursite.com
```

Configuración para tráfico máximo:
- Más conexiones simultáneas (-c)
- Keepalive desactivado para mayor realismo
- Mayor número de solicitudes (-n)

## Interpretación de los resultados

### Tabla de métricas de rendimiento
| Métrica | Bueno | Advertencia | Crítico |
|---------|-------|-------------|---------|
| Tiempo de respuesta | < 1s | 1-3s | > 3s |
| Tasa de éxito | > 99 % | 95-99 % | < 95 % |
| Solicitudes/seg | Depende del sitio | Caída del 20 % | Caída > 30 % |

### Problemas comunes y soluciones

1. **Tiempos de respuesta elevados**
- Posibles causas:
  - Recursos del servidor agotados
  - Cuellos de botella en la base de datos
  - Código sin optimizar
- Soluciones:
  - Implementar caché
  - Optimizar las consultas a la base de datos
  - Ampliar los recursos del servidor

2. **Solicitudes fallidas**
- Posibles causas:
  - Tiempo de espera del servidor agotado
  - Limitación de tasa (rate limiting)
  - Problemas de red
- Soluciones:
  - Aumentar los valores de tiempo de espera
  - Ajustar los límites de tasa
  - Comprobar la configuración de red

## Buenas prácticas para las pruebas de carga

### Qué hacer y qué no hacer

✅ Sí:
- Empieza con pruebas pequeñas
- Prueba en horas de poco tráfico
- Monitoriza los recursos del servidor
- Prueba con regularidad
- Documenta los resultados

❌ No:
- Probar producción sin avisar
- Ejecutar pruebas desde servidores de producción
- Ignorar las tasas de error
- Probar un solo endpoint



## Comparación de oha con k6

[k6](https://k6.io) es una herramienta moderna de pruebas de carga de Grafana Labs que utiliza JavaScript para crear escenarios de prueba. A diferencia del sencillo enfoque por línea de comandos de oha, k6 te permite escribir scripts de prueba complejos que pueden simular comportamientos reales de los usuarios.


### Comparación de características

| Característica | oha | k6 |
|----------------|-----|-----|
| Facilidad de uso | ★★★★★ | ★★★☆☆ |
| Requiere scripting | No | Sí |
| Métricas en tiempo real | Básicas | Avanzadas |
| Curva de aprendizaje | Mínima | Moderada |
| Integración con CI/CD | Limitada | Amplia |

### Cuándo usar cada herramienta

Usa oha para:
- Comprobaciones rápidas de rendimiento
- Pruebas HTTP sencillas
- Resultados inmediatos
- Operaciones desde la línea de comandos

Usa k6 para:
- Escenarios de usuario complejos
- Análisis detallados de rendimiento
- Integración en pipelines de CI/CD
- Scripts de prueba personalizados



## Conclusión

Las pruebas de carga web con oha ofrecen una forma sencilla y eficaz de medir y comprender el rendimiento de tu sitio en distintas condiciones. A lo largo de esta guía hemos visto cómo instalar y usar oha, cómo interpretar sus resultados y cómo aplicar las buenas prácticas para realizar pruebas de carga eficaces.

Recuerda que realizar pruebas con regularidad, documentar los resultados con cuidado y escalar gradualmente los parámetros de las pruebas son claves para mantener un rendimiento web óptimo. Tanto si gestionas un blog pequeño como una aplicación web compleja, la sencillez y las potentes funciones de oha lo convierten en una excelente opción para la monitorización rutinaria del rendimiento y las pruebas de carga. Al poner en práctica estas pruebas, céntrate en establecer métricas de referencia, monitorizar los cambios a lo largo del tiempo y usar la información obtenida para mejorar continuamente el rendimiento de tu sitio web y la experiencia del usuario.