
Профиль памяти в Go: разбор утечки на pprof и heap
Сервис на Go рос по RSS с 200 МБ до 3 ГБ за сутки и падал по OOM. Разбираем, как pprof heap показал реальный источник и чем отличается «утечка» в Go от классической.

Сервис на Go рос по RSS с 200 МБ до 3 ГБ за сутки и падал по OOM. Разбираем, как pprof heap показал реальный источник и чем отличается «утечка» в Go от классической.

Сервис держит 40k RPS, но p99 плавает до 200 мс на ровном месте. Разбираем, как трассировка планировщика Go показывает, где горутины ждут вместо работы, и что с этим делать.

Профиль pprof показывает, куда ушло процессорное время, но легко читается неправильно. Разбираем, на что смотреть в профиле и какие выводы из него делать нельзя.

Каждое присваивание int в interface{} может обернуться аллокацией в куче. На горячем пути это превращается в миллионы объектов и рост нагрузки на GC. Разбираем, когда Go боксирует значения и как это увидеть.

За полчаса вы разберётесь, как объявлять пространства имён, разносить объявления по заголовкам и не ловить конфликты при слиянии двух библиотек.

Как выглядел перенос обработчика очередей с Python 3.11 на Go 1.22: что реально ускорилось, где потерялись месяцы и почему часть кода осталась на Python.

За полчаса вы объявите статические поля и методы, правильно их определите вне класса и избежите ошибки линковщика undefined reference. Примеры для C++17 и новее.

Дженерики в Go 1.18+ — это не шаблоны C++ и не стирание типов как в Java. Разбираем механизм GC-shape stenciling, цену интерфейсов внутри дженериков и то, где обобщения реально экономят, а где ломают производительность.

Сервис на Go начал тратить 30% CPU в GC под нагрузкой без роста трафика. Причина — упаковка значений в interface{} на горячем пути. Разбираем механизм, замеры и где подход ломается.

Сервис тратил четверть CPU на сборку мусора. Разбираю, как escape-анализ, sync.Pool и предвыделение срезов срезали аллокации в горячем пути и что показал pprof до и после.

Race detector в Go находит гонки за секунды, но только на тех путях, которые прошёл тест. Разбираем, что именно он ловит, четыре типовых источника гонок и почему проблема остаётся даже после зелёного прогона.

Сервис стабильно ест память, RSS растёт линейно, рестарт помогает на час. Виноваты забытые горутины, которые никогда не завершаются. Разбираем, как их найти через pprof и как чинить типичные причины.