Как проанализировать высокое использование памяти дампа памяти службы узла?

#node.js #windbg #memory-dump

Вопрос:

Согласно https://azureossd.github.io/2015/09/18/taking-a-crash-dump-of-nodejava-process-using-the-procdump-on-azure-webapp/

мы могли бы собрать дамп памяти node.exe с ProcDump, где мы можем использовать WinDbg, чтобы открыть его.

Существуют ли какие-либо инструменты или, возможно, расширения WinDbg, включая его команды, которые могли бы помочь нам исследовать объем памяти?

Комментарии:

1. Дамп — это стандартный формат, просто загрузите его в windbg и проверьте——————- windbg -c «!analyze -v» -z foo.dmp выведет трассировку стека и сведения об исключении.======для предварительного понимания глубокого погружения требуется некоторый опыт

2. В качестве быстрого и грязного первого анализа, учитывая, что у вас есть файл дампа, вы можете просто попробовать использовать strings64 из Sysinternals, чтобы найти все строки в файле dmp и передать вывод в файл. Чаще всего это может быть показательным. В противном случае вам может быть лучше использовать Windows Performance Recorder и, возможно, создать трассировку использования кучи, если вы можете ее воспроизвести?

3. @blabb Если вы установите условие высокой памяти в ProcDump, в аварийном дампе будет просто точка останова, ИМХО, и !analyze она совершенно бесполезна. Я не знаю, какая память node.js приложение выглядит следующим образом. Я думаю !address -summary , это будет не очень полезно, поскольку это приводит либо к собственным кучам, либо к VirtualAlloc.

4. Как насчет heapdump для просмотра памяти и siege для воспроизведения утечки? Используйте специальные инструменты JS. Я не сталкивался с узлом. Плагины JS для WinDbg.