Aller au contenu

Pprof

pprof est un outil intégré aux moteurs Go de Canopsis permettant d’analyser finement leurs performances.

Il expose différents profils (CPU, mémoire, goroutines, contention…), très utiles pour identifier des lenteurs, des pics de charge inhabituels ou un comportement anormal d’un moteur.

L’interface pprof ouvre un petit serveur HTTP sur lequel ces profils peuvent être consultés en direct ou exportés pour une analyse plus poussée.

Par défaut, pprof est désactivé.

Cette page décrit la marche à suivre pour l’activer sur un moteur Go

Exemple ici avec le moteur action :

sudo systemctl edit canopsis-engine-go@engine-action.service

Y ajouter les variables d’environnement suivantes :

[Service]
Environment="CPS_DEBUG_WEB_PPROF_ENABLE=1"

Par défaut :

  • HOST : localhost
  • PORT : 6060

Recharger systemd

sudo systemctl daemon-reload

Redémarrer le moteur

Toujours avec l’exemple du moteur action :

sudo systemctl restart canopsis-engine-go@engine-action.service

Tester

Par exemple, exécuter la commande suivante :

curl -s http://localhost:6060/debug/pprof/allocs?debug=1

Dans un déploiement Docker, l’activation de pprof se fait en surchargeant la configuration du moteur concerné via le fichier docker-compose.override.yml. L’objectif est d’activer pprof, éventuellement modifier son port ou son interface d’écoute, puis exposer le port correspondant pour y accéder depuis l’extérieur.

Modifier votre fichier docker-compose.override.yml :

action:
  command: /engine-action
  environment:
    CPS_DEBUG_WEB_PPROF_ENABLE: "1"
  ports:
    - "6060:6060"

Dans cet exemple :

  • CPS_DEBUG_WEB_PPROF_ENABLE active l’endpoint pprof.
  • Le moteur écoute par défaut sur localhost:6060 dans le conteneur.
  • Le port 6060 est exposé en local → accessible via http://localhost:6060/debug/pprof.

Appliquer la configuration :

docker compose down action
docker compose up action -d

Une fois le service relancé, pprof est accessible via :

http://localhost:<port>/debug/pprof/

Lorsque Canopsis est déployé via Helm, l’activation de pprof se fait en ajoutant les variables d’environnement nécessaires dans la section env: du moteur souhaité.

Les charts des engines ne prévoient pas l’ouverture de ports supplémentaires, pprof sera donc accessible uniquement depuis l’intérieur du cluster ou via un port-forward.

Dans votre fichier customer-values.yaml, ajouter les variables d’environnement dans le bloc env: du moteur voulu.

Exemple pour l’engine action :

engine:
  action:
    env:
      - name: CPS_DEBUG_WEB_PPROF_ENABLE
        value: "1"

Notes :

  • Par défaut pprof écoute sur localhost:6060 dans le pod.

Redéployer l’engine

helm upgrade canopsis-prod -f customer-values.yaml canopsis/canopsis-pro

Comme les ports ne sont pas exposés automatiquement, utiliser un port-forward :

kubectl port-forward pod/<nom-du-pod> 6060:6060

Puis ouvrir :

http://localhost:6060/debug/pprof/