Optimiser le garbage collection Go avec GOGC

renaud-olivie 12/05/2026
RÉSOLU

Hello, je constate des pics de latence réguliers sur mon microservice en Go. Après analyse avec go tool pprof, il semble que le Garbage Collector soit trop agressif, ce qui cause des pauses STW (Stop-The-World) perceptibles sous forte charge.

J'ai essayé de modifier GOGC, mais les résultats sont mitigés sur le heap. Quelqu'un a des retours d'expérience sur le tuning fin en production ?

12/05/2026 à 18:00

10 commentaires

cparis
Membre
Avatar de cparis
cparis
Membre

Le problème avec GOGC seul, c'est qu'il ne prend pas en compte le rythme d'allocation. As-tu regardé du côté de GOMEMLIMIT ? C'est souvent plus efficace depuis la 1.19.

13/05/2026 à 17:01

J'ai testé GOMEMLIMIT, ça aide à éviter l'OOM, mais les pauses persistent. Je cherche à réduire la fréquence des cycles.

14/05/2026 à 16:26
adelaide-morvan
Membre Actif
Avatar de adelaide-morvan
adelaide-morvan
Membre Actif

Si tu as beaucoup d'objets courts, essaie d'utiliser des sync.Pool pour réutiliser tes buffers. Ça réduit drastiquement la pression sur le GC.

15/05/2026 à 08:50
cparis
Membre
Avatar de cparis
cparis
Membre

Exact. Voici un exemple pour réutiliser des buffers :

var bufferPool = sync.Pool{
  New: func() interface{} {
    return make([]byte, 1024)
  },
}
16/05/2026 à 05:11

Merci pour l'exemple, je vais implémenter ça sur mes handlers HTTP. C'est une excellente piste.

17/05/2026 à 03:21
anouk-deoliveira
Membre Actif
Avatar de anouk-deoliveira
anouk-deoliveira
Membre Actif

N'oublie pas de checker les finalizers aussi, c'est souvent la cause cachée des fuites qui déclenchent le GC trop souvent.

17/05/2026 à 23:00

Bonne idée, je n'avais pas pensé aux finalizers. Je vais auditer le code pour voir s'il y en a qui traînent.

18/05/2026 à 14:08
cparis
Membre
Avatar de cparis
cparis
Membre

Tiens-nous au courant, les metrics de runtime.MemStats devraient te confirmer la baisse de la fréquence des cycles.

19/05/2026 à 12:48
adelaide-morvan
Membre Actif
Avatar de adelaide-morvan
adelaide-morvan
Membre Actif

Vérifie aussi le GODEBUG=gctrace=1 pour voir exactement ce qui se passe sous le capot pendant les pics.

20/05/2026 à 05:11

Je vais monitorer avec gctrace=1 demain en staging. Merci à tous pour les conseils.

21/05/2026 à 03:04

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire