tgoop.com/notes_of_programmer/481
Create:
Last Update:
Last Update:
Возвращаясь к теме профайлинга в контейнерах.
На днях мне эти инструменты - а конкретно dotnet-trace и dotnet-counters - помогли выяснить, что перф просирается в контейнере по причине перекомпиляции EF запроса при каждом вызове. Простой вынос его в EF.CompiledQuery снизил утилизацию проца почти в 8 раз. Да, этот запрос вызывался много раз в секунду, но я первый раз такое вижу, чтобы оно ТАК влияло.
В любой контейнер эти инструменты ставятся очень просто. У меня на данный момент контейнеры собираются на базе mcr.microsoft.com/dotnet/aspnet:8.0.2-alpine3.19 и там надо
apk add dotnet7-sdk
dotnet tool install --global dotnet-trace
dotnet tool install --global dotnet-counters
...
Потом снимаешь трейсы с помощью dotnet-trace, выносишь из контейнера (с помощью
docker cp
) и рассматриваешь их с помощью Jetbrains dotTrace (два чая этим господам, исключительно удобная штука для рассматривания следов преступления под лупой)PS Не забудьте убедица, что в вашем dockerfile НЕТ этой строки:
ENV DOTNET_EnableDiagnostics=0
потому что у меня она изначально была и инструменты соответственно не работали - просто не видился процесс :))
BY 📓 Записки программера
Share with your friend now:
tgoop.com/notes_of_programmer/481