Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Golang: goroutine, leak, pprof

Как обнаружить и устранить утечки горутин в Go-приложении?

Проверяет практический опыт поддержки продакшн-сервисов.

Короткий ответ

Утечки горутин возникают, когда горутина навсегда блокируется. Их находят через pprof (goroutine profile) и устраняют с помощью контекста, таймаутов и корректного завершения каналов.

Длинный ответ

Горутина считается “утекшей”, если она:

  • ждёт данные из канала, в который никто не пишет;

  • ждёт mutex, который никогда не освободится;

  • выполняет бесконечный цикл без условий выхода.

Как обнаружить:

  1. Подключить pprof

  2. Посмотреть профиль:

go tool pprof http://localhost:6060/debug/pprof/goroutine

  1. Ищем:

  • одинаковые stack trace;

  • большое количество “waiting on channel”.

Как устранять:

  • всегда передавать context.Context;

  • проверять <-ctx.Done() в циклах;

  • закрывать каналы;

  • добавлять таймауты к IO/DB операциям.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Golang

    Golang

Ключевые слова

#goroutine

#leak

#pprof

Подпишись на Golang Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.