Обновить
8K+
5
Тимур Гилязов@timur-developer

Пользователь

16
Рейтинг
Отправить сообщение

Я написал визуализатор сборщика мусора для Go — теперь GC не чёрный ящик

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели9.6K

Сборщик мусора в Go обычно воспринимается как что-то, что просто работает. И это, в общем, хорошо: большую часть времени о нём действительно не хочется думать.

Ровно до того момента, когда под нагрузкой сервис начинает тормозить, растут задержки и потребление памяти. В такой момент проверяешь всё подряд: CPU, метрики, сеть, pprof. И среди всего этого про сборщик мусора обычно даже не вспоминают - хотя он вполне может быть причиной просадок производительности.

В Go есть встроенные инструменты, чтобы заглянуть в его работу. Проблема в том, что в реальном запуске это быстро превращается в поток строк и чисел, из которого крайне сложно понять общую картину: стал ли GC вызываться чаще, появились ли долгие паузы, растёт ли потребление памяти.

Я написал gcscope — терминальный визуализатор сборщика мусора для Go. Он показывает, как ведёт себя GC в реальном времени: насколько часто он запускается, как меняется потребление памяти, есть ли моменты, когда паузы становятся заметно длиннее обычного. Работает с любым Go-приложением без правок в коде, и вы сразу видите наглядные графики вместо потока логов. А ещё можно сравнивать поведение своего сервиса до и после изменений.

Читать далее

Информация

В рейтинге
480-й
Зарегистрирован
Активность

Специализация

Бэкенд разработчик
Golang
HTTP
gRPC
PostgreSQL
ClickHouse
Redis
Docker
Prometheus
Grafana
Git