maurocarlu commited on
Commit
dc3bbe4
·
1 Parent(s): 35ada21

Add README for Locust load testing setup and usage for the Skill Classification API.

Browse files
Files changed (1) hide show
  1. monitoring/locust/README.md +101 -0
monitoring/locust/README.md ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Locust Load Testing - Skill Classification API
2
+
3
+ Questa directory contiene gli script per il load testing della Skill Classification API utilizzando [Locust](https://locust.io/).
4
+
5
+ ## Prerequisiti
6
+
7
+ Assicurati di avere Python installato e installa Locust:
8
+
9
+ ```bash
10
+ pip install locust
11
+ ```
12
+
13
+ ## Avvio del Test
14
+
15
+ ### 1. Avvia Locust
16
+
17
+ Dalla directory `monitoring/locust/`, esegui:
18
+
19
+ ```bash
20
+ locust -f locustfile.py
21
+ ```
22
+
23
+ ### 2. Accedi alla Web UI
24
+
25
+ Apri il browser e vai a: **http://localhost:8089**
26
+
27
+ ### 3. Configura il Test
28
+
29
+ Nella Web UI, configura i seguenti parametri:
30
+
31
+ | Parametro | Descrizione | Valore Consigliato |
32
+ |-----------|-------------|-------------------|
33
+ | **Host** | URL dell'API da testare | `http://localhost:8080` (Docker) o `http://localhost:8000` (locale) |
34
+ | **Number of users** | Numero totale di utenti simulati | 10-100 |
35
+ | **Spawn rate** | Utenti da creare al secondo | 1-10 |
36
+
37
+ ### 4. Avvia il Test
38
+
39
+ Clicca su **"Start swarming"** per avviare il test di carico.
40
+
41
+ ## Task Implementati
42
+
43
+ Lo script simula il comportamento di utenti reali con i seguenti task:
44
+
45
+ | Task | Endpoint | Metodo | Peso | Descrizione |
46
+ |------|----------|--------|------|-------------|
47
+ | **Predizione Singola** | `/predict` | POST | 3 | Classifica un singolo issue text. Task principale, eseguito più frequentemente. |
48
+ | **Predizione Batch** | `/predict/batch` | POST | 1 | Classifica multipli issue text in una singola richiesta. |
49
+ | **Monitoraggio e Storia** | `/predictions`, `/health` | GET | 1 | Visualizza la cronologia delle predizioni e verifica lo stato del sistema. |
50
+
51
+ ### Distribuzione dei Pesi
52
+
53
+ Con i pesi configurati (3:1:1), la distribuzione approssimativa delle richieste è:
54
+ - **60%** - Predizione Singola
55
+ - **20%** - Predizione Batch
56
+ - **20%** - Monitoraggio e Storia
57
+
58
+ ### Tempo di Attesa
59
+
60
+ Ogni utente attende tra **1 e 5 secondi** tra un task e l'altro per simulare un comportamento realistico.
61
+
62
+ ## Metriche Monitorate
63
+
64
+ Durante il test, Locust fornisce le seguenti metriche in tempo reale:
65
+
66
+ - **RPS (Requests Per Second)**: Numero di richieste al secondo
67
+ - **Response Time**: Tempo medio/mediano/percentili di risposta
68
+ - **Failure Rate**: Percentuale di richieste fallite
69
+ - **Active Users**: Numero di utenti attualmente attivi
70
+
71
+ ## Opzioni Avanzate
72
+
73
+ ### Esecuzione Headless (senza UI)
74
+
75
+ ```bash
76
+ locust -f locustfile.py --headless -u 50 -r 5 -t 5m --host http://localhost:8000
77
+ ```
78
+
79
+ | Opzione | Descrizione |
80
+ |---------|-------------|
81
+ | `--headless` | Esegui senza Web UI |
82
+ | `-u 50` | 50 utenti simulati |
83
+ | `-r 5` | 5 utenti creati al secondo |
84
+ | `-t 5m` | Durata del test: 5 minuti |
85
+ | `--host` | URL dell'API |
86
+
87
+ ### Esportazione Risultati
88
+
89
+ ```bash
90
+ locust -f locustfile.py --headless -u 50 -r 5 -t 5m --host http://localhost:8000 --csv=results
91
+ ```
92
+
93
+ Questo creerà file CSV con i risultati del test.
94
+
95
+ ## Struttura File
96
+
97
+ ```
98
+ monitoring/locust/
99
+ ├── locustfile.py # Script principale di load testing
100
+ └── README.md # Questa documentazione
101
+ ```