Les options d’instrumentation enregistrent ce que fait un processus Elide pendant son exécution.
| Question | Capture | Analyser avec |
|---|---|---|
| Que s’est-il passé pendant l’exécution ? | --jfr=run.jfr | jfr du JDK |
| Que contient le tas ? | --heap-dump=heap.hprof | VisualVM |
| Comment le tas évolue-t-il dans le temps ? | --vmstat | jps, jstat |
| Que fait un processus en cours ? | jcmd PID | JFR, vidages du tas, piles de threads |
| Où le code compilé passe-t-il son temps CPU ? | --jitdump=DIR | perf sous Linux |
Listez les options avec elide help instruments. Elles s’appliquent à run ainsi qu’aux scripts, extraits et modules.
Placez-les avant tout -- ou -m MODULE. Une installation du JDK 25 fournit jfr, jcmd, jps et jstat ;
VisualVM lit les vidages du tas. Pour la couverture, le traçage CPU et les
débogueurs, voir Débogage. Pour exporter traces, métriques et journaux vers un backend d’observabilité,
voir OpenTelemetry.
Enregistrer avec JFR
elide --jfr=run.jfr run app.js
jfr summary run.jfr
jfr print --events 'dev.elide.*' run.jfr--jfr utilise les paramètres profile et enregistre à la sortie normale. --jfr-settings=default ou un chemin
.jfc choisit d’autres paramètres. Les noms de fichiers et les paramètres ne peuvent contenir ni virgules ni
guillemets doubles.
| Événement | Enregistre |
|---|---|
dev.elide.Boot | Démarrage terminé ; elapsedNanos est le temps de démarrage. |
dev.elide.GuestStart / dev.elide.GuestStop | Exécution du programme d’entrée, avec langage, durée, résultat, code de sortie. |
dev.elide.HttpRequest / dev.elide.HttpResponse | Une requête servie, avec méthode, protocole, statut, durée. |
dev. | Une requête sortante, avec temps d’attente et de connexion, protocole, statut et octets du corps. |
dev. | Une négociation TLS, avec durée, rôle, résultat et ALPN. |
dev.elide.Execution | La commande s’est terminée, avec son code de sortie. |
Les URL, en-têtes et charges utiles ne sont pas enregistrés.
Vider le tas
elide --heap-dump=heap.hprof run app.js
elide --heap-dump-on-oom=oom.hprof run app.js
visualvm --openfile heap.hprof--heap-dump écrit à la sortie normale. --heap-dump-on-oom écrit lors d’une erreur de mémoire insuffisante, puis
quitte sans exécuter les hooks d’arrêt.
Observer un processus en cours
elide --vmstat run app.js &
jps -l
jstat -gc PID 1s--vmstat fait apparaître le processus dans jps (par PID, sans nom) et permet à jstat de l’échantillonner. jcmd
s’attache par PID avec ou sans --vmstat, sous Linux et macOS, avec le même utilisateur système :
jcmd PID help
jcmd PID JFR.start name=profile settings=profile
jcmd PID JFR.dump name=profile filename=live.jfr
jcmd PID GC.heap_dump live.hprof
jcmd PID Thread.printUn processus tué n’écrit pas ses captures. Videz un enregistrement en cours avec jcmd avant de l’arrêter.
Profiler avec perf sous Linux
perf record -k 1 --call-graph fp -o perf.data -- elide --jitdump=./jitdump run app.js
perf inject -j -i perf.data -o perf.jit.data
perf report -i perf.jit.data--jitdump fonctionne dans les builds de release pour Linux. Conservez le répertoire jitdump jusqu’à la fin de
perf inject. Les fonctions souvent exécutées apparaissent sous des objets jitted-. Un code de sortie nul ne prouve
pas que la capture est valide ; vérifiez que le rapport affiche vos fonctions. Sous WSL2, perf doit correspondre au
noyau en cours d’exécution.
Options de la VM
Chaque option a une écriture équivalente en option de la VM :
--jfr=run.jfr -XX:StartFlightRecording=filename=run.jfr,settings=profile,dumponexit=true
--heap-dump-on-oom=oom.hprof -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=oom.hprof -XX:+ExitOnOutOfMemoryError
--vmstat -XX:+UsePerfData
--jitdump=DIR -XX:+RuntimeJitdump -XX:RuntimeJitdumpDir=DIR-XX:+DumpHeapAndExit -XX:HeapDumpPath=initial.hprof vide le tas initial, puis quitte. -Xmx et -XX:MaxHeapSize
correspondent au même réglage que --max-mem ; passer les deux est une erreur.