18 – Troubleshooting
Version : 4.0.0 Date : 2025-12-09
1. Problèmes de démarrage
1.1 Application ne démarre pas
Symptôme : L’application ne démarre pas ou crashe immédiatement.
Causes possibles :
-
Port déjà utilisé
Error: Address already in use: bindSolution :
# Trouver le processus lsof -i :8080 # Changer le port export HTTP_PORT=8081 -
Configuration manquante
Failed to bind properties under 'socle.xxx'Solution : Vérifier les variables d’environnement et
application.yml -
Erreur de logging
ERROR StatusLogger Log4j2 could not find a logging implementationSolution : Vérifier que
log4j2.xmlexiste danssrc/main/resources/
1.2 Workers ne démarrent pas
Symptôme : Les workers sont enregistrés mais restent en état REGISTERED.
Solutions :
- Vérifier les logs d’initialisation
- Vérifier les dépendances (base de données, Redis, etc.)
- Vérifier les priorités de démarrage
curl http://localhost:8080/admin/workers
2. Problèmes de connectivité
2.1 Redis non accessible
Symptôme :
Cannot get Jedis connection
Solutions :
- Vérifier l’hôte et le port Redis
redis-cli -h localhost -p 6379 ping - Vérifier le mot de passe
- Vérifier les firewalls
2.2 Database non accessible
Symptôme :
Database may be already in use: "locked by another process"
Solutions :
- Arrêter les autres instances
- Utiliser
AUTO_SERVER=TRUEdans l’URL H2 - Supprimer les fichiers de lock
rm ./data/socle-techdb.lock.db
3. Problèmes de logging (V4)
3.1 Logs non visibles
Symptôme : Aucun log n’apparaît.
Solutions :
- Vérifier que
log4j2.xmlexiste - Vérifier le niveau de log
- Vérifier
logging.configdansapplication.yml
logging:
config: classpath:log4j2.xml
3.2 Conflit Logback/Log4j2
Symptôme :
SLF4J: Class path contains multiple SLF4J bindings
Solution : Exclure Logback de toutes les dépendances
mvn dependency:tree | grep logback
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
3.3 AsyncLoggers non actifs
Symptôme : Performance de logging dégradée.
Solution : Vérifier log4j2.component.properties
Log4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
3.4 LogForwarder queue pleine
Symptôme :
WARN - Log queue full, storing to fallback
Solutions :
- Augmenter
queue-capacity - Vérifier la connectivité réseau vers le LogHub
- Réduire le volume de logs
# Vérifier les logs en fallback
curl http://localhost:8080/admin/logforwarder/status
4. Problèmes de performance
4.1 Haute consommation CPU
Solutions :
- Vérifier les workers en boucle infinie
- Vérifier les logs en DEBUG
- Profiler avec JFR
jcmd <pid> JFR.start duration=60s filename=recording.jfr
4.2 Haute consommation mémoire
Solutions :
- Analyser le heap dump
jmap -dump:format=b,file=heap.hprof <pid> - Vérifier les fuites dans KvBus/SharedDataRegistry
- Ajuster la configuration JVM
4.3 Latence élevée
Solutions :
- Vérifier les circuit breakers
curl http://localhost:8080/admin/resilience/circuits - Vérifier les connexions réseau
- Vérifier les métriques
curl http://localhost:8080/actuator/prometheus | grep latency
5. Problèmes de résilience
5.1 Circuit Breaker bloqué en OPEN
Symptôme : Un circuit reste ouvert malgré la récupération du service.
Solutions :
- Reset manuel
curl -X POST http://localhost:8080/admin/resilience/circuits/my-circuit/reset - Vérifier le timeout configuré
- Vérifier que le service cible répond
5.2 Retry infini
Symptôme : L’application retry sans fin.
Solutions :
- Vérifier
max-attemptsconfiguré - Vérifier les exceptions retryables
- Ajouter un circuit breaker
6. Problèmes H2 TechDB (V4)
6.1 Base corrompue
Symptôme :
File corrupted
Solution :
rm -rf ./data/socle-techdb.*
# Redémarrer l'application
6.2 H2 Console inaccessible
Solutions :
- Vérifier
socle.techdb.console.enabled=true - Vérifier l’URL :
http://localhost:8080/h2-console - Utiliser l’URL JDBC correcte :
jdbc:h2:file:./data/socle-techdb
6.3 Offsets perdus
Solutions :
- Vérifier que TechDB est enabled
- Vérifier les logs de saveOffset
- Requêter directement H2
SELECT * FROM socle_offsets;
7. Problèmes d’authentification (V4)
7.1 Login échoue
Symptôme :
AuthenticationException: Login failed: 401
Solutions :
- Vérifier
API_KEY - Vérifier
SOURCE_NAME - Vérifier
AUTH_SERVER_URL
7.2 Token expiré
Symptôme :
Token expired
Solutions :
- Vérifier l’horloge système (NTP)
- Augmenter
access-token-buffer-seconds
7.3 Admin API 401
Solutions :
- Vérifier si l’auth est activée
socle.admin.auth.enabled: true - Utiliser les credentials corrects
curl -u admin:password http://localhost:8080/admin/workers
8. Problèmes Kubernetes
8.1 Pod en CrashLoopBackOff
Solutions :
- Vérifier les logs
kubectl logs <pod-name> --previous - Vérifier les ressources
- Vérifier les probes
8.2 Probes échouent
Solutions :
- Augmenter
initialDelaySeconds - Vérifier que l’endpoint
/admin/healthrépond - Vérifier le port
8.3 OOMKilled
Solutions :
- Augmenter les limites mémoire
- Ajuster les options JVM
-XX:MaxRAMPercentage=75.0
9. Commandes de diagnostic
9.1 API Admin
# Santé globale
curl http://localhost:8080/admin/health
# État des workers
curl http://localhost:8080/admin/workers
# Registry
curl http://localhost:8080/admin/registry
# Circuits breakers
curl http://localhost:8080/admin/resilience/circuits
# Configuration
curl http://localhost:8080/admin/config
# Métriques
curl http://localhost:8080/actuator/prometheus
9.2 JVM
# Thread dump
jstack <pid>
# Heap info
jmap -heap <pid>
# GC stats
jstat -gcutil <pid> 1000
# JFR recording
jcmd <pid> JFR.start duration=60s filename=recording.jfr
9.3 Réseau
# Test Redis
redis-cli -h localhost ping
# Test HTTP
curl -v http://localhost:8080/admin/health
# DNS
nslookup myservice.namespace.svc.cluster.local
10. Logs utiles à activer
# application.yml ou variables d'environnement
logging:
level:
eu.lmvi.socle: DEBUG
eu.lmvi.socle.mop: DEBUG
eu.lmvi.socle.supervisor: DEBUG
eu.lmvi.socle.techdb: DEBUG
eu.lmvi.socle.resilience: DEBUG
org.springframework.web: DEBUG
io.lettuce: DEBUG # Redis
11. Checklist de diagnostic
□ L'application démarre-t-elle ?
□ Logs de démarrage présents ?
□ Port disponible ?
□ Configuration valide ?
□ Les workers sont-ils healthy ?
□ GET /admin/workers
□ Heartbeats reçus ?
□ Erreurs dans les logs ?
□ Les connexions externes fonctionnent-elles ?
□ Redis accessible ?
□ Base de données accessible ?
□ APIs externes accessibles ?
□ Les métriques sont-elles normales ?
□ CPU < 80% ?
□ Mémoire < 80% ?
□ Latence acceptable ?
□ Taux d'erreur bas ?
□ Les logs sont-ils corrects ?
□ Log4j2 configuré ?
□ LogForwarder fonctionne ?
□ Pas de logs en fallback ?
12. Références
- 14-ADMIN-API – API Admin
- 15-METRICS – Métriques
- 17-HOWTO – How-To Guides

Laisser un commentaire