go - go中的pprof导入开销有多大

标签 go

我有几个 go 程序,其中有一个未使用的 net/http/pprof 入口。

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

我想知道这个导入的开销在 CPU 和内存方面是多少。阿卡。我应该在 prod 中删除 then(是的),但是如果我忘记了会有什么影响?

相关:此导入的确切副作用是什么?它注册了一些 http 处理程序,但它是否也在 go 的 malloc 函数中注入(inject)了东西?

最佳答案

导入 net/http/pprof 包的开销非常有限:它只是为 http 服务器安装一些处理程序。源码见:

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

CPU profiling 在初始化时不会激活,它只会在调用/debug/pprof/profile REST 服务时激活一段时间(默认为 30 秒)。所以用这个包编译应该不会对应用程序的性能产生太大影响(除了需要额外的用于 http 服务器的 goroutines)。

现在,在执行/debug/pprof/profile 期间,CPU 采样被激活,因此预计会有性能开销。我想它可以用于生产代码,前提是对相应端口的访问仅限于应用程序的管理员。

关于go - go中的pprof导入开销有多大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26545159/

相关文章:

结构初始化以满足没有显式方法定义的接口(interface)

algorithm - 如何编写一个函数来检查当前时间是否在时间窗口内

Golang 多个收件人与 gomail.v2

go - 设置 Go+Gin 服务器并在负载下获得 13 秒的响应时间

go - 等待所有go routines,非阻塞

express - Golang httpRouter 在与函数 slice 一起使用时返回最后一个响应

go - 运行 Go Benchmark 时出现奇怪的输出

go - 如何向 Go 中的现有类型添加新方法?

regex - 如何在Go中将正则表达式与反向引用匹配?

json - 将具有重复字段的字符串解码为 json