File size: 3,902 Bytes
dc3bbe4 9dabbe0 dc3bbe4 9dabbe0 dc3bbe4 9dabbe0 dc3bbe4 9dabbe0 dc3bbe4 9dabbe0 dc3bbe4 9dabbe0 dc3bbe4 9dabbe0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# Locust Load Testing - Skill Classification API
Questa directory contiene gli script per il load testing della Skill Classification API utilizzando [Locust](https://locust.io/).
## Prerequisiti
Assicurati di avere Python installato e installa Locust:
```bash
pip install locust
```
## Avvio del Test
### 1. Avvia Locust
Dalla directory `monitoring/locust/`, esegui:
```bash
locust -f locustfile.py
```
### 2. Accedi alla Web UI
Apri il browser e vai a: **http://localhost:8089**
### 3. Configura il Test
Nella Web UI, configura i seguenti parametri:
| Parametro | Descrizione | Valore di Default |
|-----------|-------------|-------------------|
| **Host** | URL dell'API da testare | `https://dacrow13-hopcroft-skill-classification.hf.space` |
| **Number of users** | Numero totale di utenti simulati | 5-10 (HF Spaces) / 10-100 (locale) |
| **Spawn rate** | Utenti da creare al secondo | 1-2 |
### 4. Avvia il Test
Clicca su **"Start swarming"** per avviare il test di carico.
## Ambienti di Test
Lo script è preconfigurato per testare l'API deployata su **HuggingFace Spaces**:
| Ambiente | URL | Note |
|----------|-----|------|
| **HuggingFace Spaces** (default) | `https://dacrow13-hopcroft-skill-classification.hf.space` | Produzione |
| Docker locale | `http://localhost:8080` | Sviluppo con Docker |
| Uvicorn locale | `http://localhost:8000` | Sviluppo senza Docker |
Per testare un ambiente diverso, usa il flag `--host`:
```bash
locust -f locustfile.py --host http://localhost:8080
```
## Task Implementati
Lo script simula il comportamento di utenti reali con i seguenti task:
| Task | Endpoint | Metodo | Peso | Descrizione |
|------|----------|--------|------|-------------|
| **Predizione Singola** | `/predict` | POST | 3 | Classifica un singolo issue text. Task principale, eseguito più frequentemente. |
| **Predizione Batch** | `/predict/batch` | POST | 1 | Classifica multipli issue text in una singola richiesta. |
| **Monitoraggio e Storia** | `/predictions`, `/health` | GET | 1 | Visualizza la cronologia delle predizioni e verifica lo stato del sistema. |
### Distribuzione dei Pesi
Con i pesi configurati (3:1:1), la distribuzione approssimativa delle richieste è:
- **60%** - Predizione Singola
- **20%** - Predizione Batch
- **20%** - Monitoraggio e Storia
### Tempo di Attesa
Ogni utente attende tra **1 e 5 secondi** tra un task e l'altro per simulare un comportamento realistico.
## Metriche Monitorate
Durante il test, Locust fornisce le seguenti metriche in tempo reale:
- **RPS (Requests Per Second)**: Numero di richieste al secondo
- **Response Time**: Tempo medio/mediano/percentili di risposta
- **Failure Rate**: Percentuale di richieste fallite
- **Active Users**: Numero di utenti attualmente attivi
## Opzioni Avanzate
### Esecuzione Headless (senza UI)
```bash
# Test su HuggingFace Spaces (default)
locust -f locustfile.py --headless -u 5 -r 1 -t 2m
# Test su Docker locale
locust -f locustfile.py --headless -u 50 -r 5 -t 5m --host http://localhost:8080
```
| Opzione | Descrizione |
|---------|-------------|
| `--headless` | Esegui senza Web UI |
| `-u 5` | 5 utenti simulati |
| `-r 1` | 1 utente creato al secondo |
| `-t 2m` | Durata del test: 2 minuti |
| `--host` | URL dell'API (override) |
### Esportazione Risultati
```bash
locust -f locustfile.py --headless -u 5 -r 1 -t 2m --csv=results
```
Questo creerà file CSV con i risultati del test.
## Struttura File
```
monitoring/locust/
├── locustfile.py # Script principale di load testing
└── README.md # Questa documentazione
```
## Note Importanti
- **HuggingFace Spaces**: Usa un numero ridotto di utenti (5-10) per non sovraccaricare il servizio gratuito
- **Latenza**: I test su HF Spaces avranno latenze maggiori rispetto ai test locali
- **Cold Start**: Il primo request potrebbe essere lento se lo Space è in sleep mode
|