分析Golang服务器

时间:2015-11-17 12:45:41

标签: go profiling

我想介绍一下我在Go中编写的简单网络服务器。它接受请求,将请求映射到avro对象并在go例程中将其发送到Kafka。要求是它立即回答并稍后向Kafka发送一个对象。在本地,它平均在1毫秒内回答。我一直试图通过使用davecheney / profile包启动脚本并使用jmeter发送测试请求来对其进行概要分析。我可以在输出中看到生成的配置文件,但无论jemeter发送请求的时间长短,它都保持为空。我在Mac El Capitan上运行它。我读到在Mac上有一些分析问题,但它会在El Capitan上运行。你有什么提示吗?

1 个答案:

答案 0 :(得分:1)

首先,我不确定您是否正在尝试进行延迟分析。如果是这样,请注意Go的CPU分析器仅报告在CPU上执行的功能所花费的时间,并且不包括睡眠时间等。如果CPU分析确实是您正在寻找的,请继续阅读。

如果您正在运行网络服务器,只需在导入中包含以下内容(在main()所在的文件中)并重建:

import _ "net/http/pprof"

然后,在通过jmeter施加负载时,运行:

go tool pprof /path/to/webserver/binary http://<server>/debug/pprof/profile

net/http/pprof软件包提供了分析钩子,允许您随时按需分析Web服务器,即使它在生产中运行也是如此。但是,如果您的网络服务器要公开曝光,您可能希望使用不同的防火墙端口。