🗄️ Performance · Diagnostic

@perf-profilerLe diagnosticien — latence, mémoire, CPU

Maifady est un plugin Claude Code 100% gratuit avec 30 agents IA — @perf-profiler est ton SRE virtuel : tu décris le symptôme ("p99 à 800ms", "RAM qui grimpe de 200MB à 4GB en 1h"), il te dit quel outil utiliser, classe les hypothèses par probabilité, et propose UNE optimisation à la fois avec re-mesure.

Télécharger MaifadyVoir les 30 agents

Le problème qu'il résout

Ton API Python consomme 4 GB de RAM en prod. Au démarrage : 200 MB. Au bout d'une heure : 4 GB. C'est un memory leak — mais lequel ? Tu pourrais te perdre dans cProfile, mais tu ne sais pas par où commencer.

@perf-profiler te dit : "memray (pas de code change) en premier, hypothèse #1 = cache sans éviction, hypothèse #2 = session DB leak, etc." Puis pour chacune, il propose un fix concret avec une re-mesure.

Comment il bosse

  1. Tu décris le symptôme avec précision : quelle métrique, quel percentile, quelle évolution dans le temps.
  2. Il propose la mesure à lancer en premier (outil + commande exacte).
  3. Il classe les hypothèses de cause racine par probabilité.
  4. Pour la #1, il propose un fix et te dit comment confirmer.
  5. Si #1 ne marche pas, on passe à #2.

Exemple concret

Tu tapes

@perf-profiler API Flask en prod, RAM grimpe de 200MB à 4GB en 1h,
sans pic de trafic. Outils + hypothèses prioritaires ?

Tu obtiens

## Symptom
Memory growth steady (200MB → 4GB en 1h) sans corrélation au trafic.
→ Leak (rétention progressive), pas un peak de charge.

## Suggested first measurement
1. memray (sampling, no code change) :
   $ pip install memray
   $ memray attach --pid <pid> --output /tmp/leak.bin

2. py-spy snapshot :
   $ py-spy dump --pid <pid>

## Hypothesis ranking
1. Cache sans éviction (lru_cache, dict global) — 60%
2. Connexions DB pas closées (session leak) — 25%
3. Logging handlers qui accumulent — 10%
4. C extension qui leak — 5%

## Si hypothèse 1 confirme
Fix: cachetools.TTLCache OU lru_cache(maxsize=N).
Re-measure: RAM doit plateau au lieu de croître.

Pourquoi tu vas l'aimer

📏

Mesure d'abord

Pas d'optimisation à l'aveugle. Il insiste pour que tu mesures avant et après.

🎯

Hypothèses ordonnées

Pas "ça peut être X, Y, ou Z". Mais "60% chance X, 25% Y, 10% Z" — tu attaques d'abord le plus probable.

🛠️

Outils par stack

Node, Python, Go, Java, PHP — chaque écosystème a ses outils. L'agent les connaît.

🔁

Itératif

Une optim à la fois, re-mesure, on continue. Pas un gros patch optimiste qui change 50 choses.

Quand l'utiliser

✅ Idéal pour

  • Memory leak en prod
  • Endpoint qui dépasse son SLO de latence
  • Job batch qui ne tient plus sa fenêtre
  • Régression perf après un déploiement

⚠️ Pas adapté quand

  • Tu sais déjà que c'est SQL → @sql-optimizer
  • Tu veux optimiser un bundle JS → @bundle-analyzer
  • Tu veux du load testing dynamique — ce n'est pas son but

Combine avec ces agents

Questions fréquentes

Quels langages supporte-t-il ?

Node.js (clinic.js, 0x), Python (memray, py-spy, cProfile), Go (pprof), Java (async-profiler, JFR), PHP (Blackfire, XHProf), DB (pg_stat_statements, slow query log).

Optimise-t-il ?

Il diagnostique en priorité, propose UNE optimisation à la fois, et insiste pour que tu mesures avant et après. Pas d'optimisation prématurée — "il faut mesurer pour optimiser, sinon tu devines".

Prêt à diagnostiquer ?

Télécharger Maifady