Go за гранью скорости: pprof на проде | avito.code
HTML-код
- Опубликовано: 25 июл 2024
- Привет! Это avito.code. Здесь опытные инженеры Авито делятся знаниями и рассказывают про свои рабочие инструменты.
В этом выпуске Иван Нещадин, старший инженер в команде Architecture Governments, продолжает делиться опытом оптимизации и профилирования приложений на Go. Речь пойдет о том, как использовать pprof на проде. Добавление специальных хендлеров в http-сервер сервиса.
Таймкоды
00:00 | Вступление
00:45 | Как добавлять хендлеры в http-сервер
03:12 | Собираем профиль CPU
05:26 | Как сработала утилита wrk
06:41 | Смотрим на полученный профиль
08:29 | Собираем профиль памяти с помощью pprof
11:41 | Разбираемся, где и почему было выделено 7 миллионов объектов
13:31 | Пробуем убедиться, что проблема заключается в garbage collector
15:44 | Заменяем библиотеку на bigcash
17:11 | Ещё раз нагружаем сервис
20:05 | Заключение
AvitoTech - это команда инженеров Авито. Подпишитесь на наш канал, соцсети и блоги, чтобы узнавать больше о технологиях Авито 👇🏻
ВК: avitotech
Телеграм: t.me/avitotech
Хабр: habr.com/ru/company/avito
Медиум (eng): / avitotech
Гитхаб: github.com/avito-tech
Сайт: avito.tech
#avitocode #go #pprof Наука
просмотрел больше 10 видео про pprof, это видео без сомнения лучшее
спасибо
Сравнение профилей 🔥
Отличная подача материала, спасибо!
Большое спасибо
Пуля-бомба. Спасибо!
что мешает в данном видео сделать чтобы введённые команды переносились на следующую строку для читабельности?
Спасибо за видео. Насколько это плохая идея сделать хранилище на хэш таблицах, если придётся там хранить большой объем данных, их придётся так же прятать от GC, как я понимаю.
Добрый день!
Получится тот же самый эффект, что и на видео, ведь в видео по-сути тоже используется библиотека, внутри которой и используется хэш мапа (github.com/bluele/gcache/blob/master/lru.go#L11). Но это зависит от того, сколько вы объектов планируете хранить, если до 100к, то в целом решение должно подойти, но если больше - лучше уже смотреть в сторону github.com/allegro/bigcache
@@AvitoTechа что если хранить структуры неопределенного размера в байтах? Bigcache не подойдет?
2023 год у них в коде interface{} 🤦♂️
Это код сторонней библиотеки 2021 года. А чем вам так interface{} не угодил?
@@exitialislp про генерики слышали ?
алиас any наверное подразумевается@@exitialislp
покажите ваш гитхаб
Про any слышали ?