2014-10-24 4 views
12

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

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

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

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

ответ

13

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

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

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

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

+1

Я добавил, что КОГДА выборка процессора включена, она тяжелая. Как и в случае «снизит производительность вашего приложения до 1% от оригинала». Я был бы брезгливо оставить возможность случайной активации вокруг. – user918176

+1

@ user918176: ерунда. –

Смежные вопросы