maurocarlu's picture
add Locust load testing script and documentation for the Skill Classification API
9dabbe0

Locust Load Testing - Skill Classification API

Questa directory contiene gli script per il load testing della Skill Classification API utilizzando Locust.

Prerequisiti

Assicurati di avere Python installato e installa Locust:

pip install locust

Avvio del Test

1. Avvia Locust

Dalla directory monitoring/locust/, esegui:

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:

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)

# 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

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