11 commentaires
Le problème de GOGC seul, c'est que ça ne tient pas compte des allocations hors-tas. GOMEMLIMIT est un game changer depuis Go 1.19.
C'est ce que je pensais, mais j'ai peur que le GC s'emballe si la limite est trop proche du pic d'utilisation.
Exactement, et n'oublie pas de vérifier tes métriques go_memstats_heap_alloc_bytes pour voir si tu n'as pas une fuite lente avant de blâmer le GC.
Regarde aussi si tu n'as pas des allocations massives sur la stack, le GC ne les gère pas pareil.
N'oublie pas de vérifier le paramètre debug.SetMemoryLimit si tu veux ajuster dynamiquement.
C'est plus propre de le faire via variable d'environnement pour éviter de recompiler.
Je reste sur les variables d'env, c'est plus simple pour le déploiement. Merci pour les pistes !
Laisser une réponse
Vous devez être connecté pour poster un message !
Salut à tous. J'ai un service Go qui tourne en conteneur avec une limite mémoire assez stricte (2Go). Je constate des pics d'utilisation mémoire et des latences de GC qui tuent mes perfs. J'ai essayé de jouer avec
GOGCmais c'est un compromis difficile entre CPU et RAM.Est-ce que l'utilisation de
GOMEMLIMITest devenue le standard pour éviter l'OOM Killer sans pour autant sacrifier tout le throughput ? Voici mes settings actuels :