Приложение начинает тормозить, запросы зависают, а в логах — ничего полезного? Можно автоматически снять memory dump в момент проблемы и потом разобрать состояние процесса.
➡️ Идея простая:
var task = Task.Run(() => { });
if (!task.Wait(3000))
{
// ThreadPool, вероятно, перегружен
// → создаём memory dump
}
➡️ Dump позволяет посмотреть:
— какие потоки зависли;
— где стоят Task;
— что происходит в ThreadPool;
— какие объекты находятся в памяти.
На Windows для создания dump можно использовать MiniDumpWriteDump, а в Linux — встроенный в .NET createdump. А дальше .dmp открывается в Visual Studio — можно исследовать call stacks, переменные и состояние потоков.
💡 Особенно полезно для production-проблем, которые невозможно нормально воспроизвести локально.
🔗 Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#sharp_view