6 commentaires
C'est un classique. Go ne lit pas nativement les limites de cgroups pour GOMAXPROCS. Il voit tous les cœurs du host. Tu dois utiliser une librairie comme automaxprocs pour ajuster cela dynamiquement.
Merci, je vais tester l'import de go.uber.org/automaxprocs. Est-ce que cela impacte aussi le garbage collector ?
Exact. Sans automaxprocs, tu forces le runtime Go à gérer une file d'attente de threads inutilement longue. Regarde aussi GOMEMLIMIT pour stabiliser le heap.
N'oublie pas de vérifier tes métriques avec :
go tool pprof -http=:8080 profile.pb.gz après le déploiement de la correction.
J'ai ajouté import _ "go.uber.org/automaxprocs", les latences p99 ont chuté de 40ms à 8ms. Merci pour le tips !
Laisser une réponse
Vous devez être connecté pour poster un message !
Je constate une latence élevée sur mon service Go en production. Après analyse avec
go tool pprof, je vois un nombre massif de context switches. Mon conteneur est limité à 2 vCPU via Kubernetes, maisGOMAXPROCSsemble tenter de créer bien plus de threads. Est-ce que quelqu'un a déjà rencontré une dégradation de performance due à un mauvais alignement des threads OS avec les limites de ressources cgroups ?