Насколько велик объем накладных расходов pprof

У меня есть несколько программ go, у которых в них есть неиспользованный inport net/http/pprof.

import _ "net/http/pprof"
...
//http.ListenAndServe("127.0.0.1:6060", nil)

Мне было интересно, какие накладные расходы на этот импорт приходится на процессор и Mem. Ака. Должен ли я удалить то в prod (да), но каково было бы влияние, если бы я забыл?

Связано: каковы конкретные побочные эффекты этого импорта? Он регистрирует некоторые обработчики http, но также ли он вносит вещи в функции go malloc?

Ответ 1

Накладные расходы на импорт пакета net/http/pprof довольно ограничены: он просто устанавливает некоторые обработчики для http-сервера. См. Исходный код по адресу:

http://golang.org/src/pkg/net/http/pprof/pprof.go

Профилирование ЦП не активируется во время инициализации, оно активируется только в течение периода времени (по умолчанию 30 секунд) при вызове службы REST/debug/pprof/profile. Поэтому компиляция с этим пакетом не должна сильно влиять на производительность приложения (за исключением того, что необходимы дополнительные goroutines для http-сервера).

Теперь, во время выполнения /debug/pprof/profile, выборка процессора активирована, поэтому ожидается накладные расходы. Я думаю, он может быть использован для производственного кода, если доступ к соответствующему порту ограничен администраторами приложения.