Chaos Backend¶
Les 7 anomalies backend dégradent le container perfshop-app (Spring Boot).
1. CPU Burn 🔥¶
Implémentation : CpuChaosScheduler.java
Boucle SHA-256 exécutée toutes les 100ms sur un thread dédié.
Formule : iterations = intensity × 3200
@Scheduled(fixedRate = 100)
public void executeCpuChaos() {
int iterations = intensity * 3_200; // 100% → 320 000 iter/100ms
MessageDigest digest = MessageDigest.getInstance("SHA-256");
for (int i = 0; i < iterations; i++) {
// hashage non optimisable par le JIT
wasteResult = digest.digest(salted);
}
}
Métriques impactées :
- docker_container_cpu_percent{container="perfshop-app"} → monte proportionnellement
- http_server_requests_seconds p99 → augmente si CPU saturé
2. Memory Leak 💾¶
Implémentation : MemoryLeakService.java
Accumulation d'objets en mémoire jamais libérés, provoquant une montée continue du heap JVM et des cycles GC de plus en plus fréquents.
Métriques impactées :
- jvm_memory_used_bytes{area="heap"} → montée continue
- jvm_gc_pause_seconds_sum → augmente
- jvm_gc_pause_seconds_count → fréquence GC augmente
3. Thread Pool Chaos 🧵¶
Implémentation : ThreadPoolChaosService.java
Thread.sleep() bloquants sur les threads Tomcat. Les threads restent occupés
sans traiter de nouvelles requêtes → saturation progressive.
Métriques impactées :
- tomcat_threads_busy_threads → monte vers le max (200)
- jvm_threads_states_threads{state="timed-waiting"} → augmente
- http_server_requests_seconds → latence explose
4. DB Pool Chaos 🗄️¶
Implémentation : DbPoolChaosService.java
Acquisition de connexions HikariCP sans les libérer → pool épuisé, les requêtes suivantes attendent en file.
Métriques impactées :
- hikaricp_connections_active → monte vers le max (20)
- hikaricp_connections_pending → files d'attente
- hikaricp_connections_acquire_seconds → temps d'acquisition explose
5. Slow Query 🐌¶
Implémentation : SlowQueryChaosService.java
Injection de délais dans les requêtes SQL via pg_sleep() ou délai applicatif.
Métriques impactées :
- http_server_requests_seconds_bucket{uri="/api/products"} p99 → explose
- hikaricp_connections_acquire_seconds → connexions tenues longtemps
6. Deadlock 🔒¶
Implémentation : DeadlockChaosService.java
Création de locks mutuellement bloquants → threads en état BLOCKED indéfiniment.
Métriques impactées :
- jvm_threads_states_threads{state="blocked"} → monte
- http_server_requests_seconds_count{status="5xx"} → erreurs 503
7. Network Delay 🌐¶
Implémentation : NetworkDelayChaosService.java
Délai artificiel ajouté avant chaque réponse HTTP.
intensity × 20ms de délai à chaque requête.
Métriques impactées :
- http_server_requests_seconds toutes percentiles → augmentent uniformément
- Corrélation forte avec p50 (contrairement à Slow Query qui impacte surtout p99)