Прапорці інструментування записують, що робить процес Elide під час роботи.
| Питання | Запис | Чим переглядати |
|---|---|---|
| Що сталося під час запуску? | --jfr=run.jfr | jfr з JDK |
| Що лежить у купі? | --heap-dump=heap.hprof | VisualVM |
| Як купа поводиться з часом? | --vmstat | jps, jstat |
| Що робить запущений процес? | jcmd PID | JFR, дампи купи, стеки потоків |
| Де скомпільований код витрачає час CPU? | --jitdump=DIR | Linux perf |
Список прапорців виводить elide help instruments. Вони діють для run, а також для скриптів, фрагментів і модулів.
Вказуйте їх перед будь-яким -- або -m MODULE. Встановлений JDK 25 надає jfr, jcmd, jps і jstat;
VisualVM читає дампи купи. Про покриття, трасування CPU і налагоджувачі
див. Налагодження. Щоб експортувати трасування, метрики й журнали до системи спостережуваності, див.
OpenTelemetry.
Запис через JFR
elide --jfr=run.jfr run app.js
jfr summary run.jfr
jfr print --events 'dev.elide.*' run.jfr--jfr використовує налаштування profile і зберігає запис під час звичайного завершення. --jfr-settings=default
або шлях до .jfc вибирає інші налаштування. Імена файлів і налаштування не можуть містити коми та подвійні лапки.
| Подія | Що записує |
|---|---|
dev.elide.Boot | Запуск завершено; elapsedNanos — час запуску. |
dev.elide.GuestStart / dev.elide.GuestStop | Виконання програми точки входу: мова, тривалість, результат, код виходу. |
dev.elide.HttpRequest / dev.elide.HttpResponse | Один обслужений запит: метод, протокол, статус, тривалість. |
dev. | Один вихідний запит: час у черзі та на підключення, протокол, статус і байти тіла. |
dev. | Одне TLS-рукостискання: тривалість, роль, результат і ALPN. |
dev.elide.Execution | Команда завершилася, з її кодом виходу. |
URL-адреси, заголовки й корисне навантаження не записуються.
Дамп купи
elide --heap-dump=heap.hprof run app.js
elide --heap-dump-on-oom=oom.hprof run app.js
visualvm --openfile heap.hprof--heap-dump записує дамп під час звичайного завершення. --heap-dump-on-oom записує його в разі помилки браку
пам’яті й потім завершує процес без запуску хуків завершення.
Спостереження за запущеним процесом
elide --vmstat run app.js &
jps -l
jstat -gc PID 1s--vmstat робить процес видимим у jps (за PID, без імені) і дозволяє jstat знімати з нього показники. jcmd
під’єднується за PID з --vmstat або без нього, у Linux і macOS, від того самого користувача ОС:
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.printПримусово зупинений процес не записує свої дані. Збережіть поточний запис через jcmd, перш ніж зупинити процес.
Профілювання з perf у 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 працює в релізних збірках для Linux. Не видаляйте каталог jitdump, доки не завершиться perf inject.
Часто виконувані функції з’являються під об’єктами jitted-. Нульовий код виходу не гарантує коректного запису;
перевірте, що у звіті видно ваші функції. У WSL2 версія perf має відповідати запущеному ядру.
Параметри VM
Кожен прапорець має запис у вигляді параметра 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 записує дамп початкової купи й завершує роботу. -Xmx і
-XX:MaxHeapSize — те саме налаштування, що й --max-mem; передавати обидва — помилка.