Golang剖析引擎测试

时间:2015-11-12 20:05:09

标签: google-app-engine go pprof

我似乎有一个与接收大文件并将它们发送到GCS有关的内存泄漏。尝试使用pprof来描述我的appengine代码的内存使用情况。我的测试使用了appengine / aetest,我可以输出内存配置文件,但结果似乎没有显示任何有用的信息。

首先我做了一个基准测试。这是一个非常慢的操作,所以它只运行一次。

startxref
116
%%EOF

我的所有函数调用都没有显示,这个0.5 MB的数字显然是不正确的(我打开一个12 MB的文件并上传它)。我如何获得真实的内存配置文件?

$ goapp test ./cloudstore -run=none -bench=. -memprofile=cloud.prof
BenchmarkLargeFile      1        54124706398 ns/op

$ go tool pprof --text cloudstore.test cloud.prof 
Adjusting heap profiles for 1-in-524288 sampling rate
Total: 0.5 MB
     0.5 100.0% 100.0%      0.5 100.0% runtime.newG
     0.0   0.0% 100.0%      0.5 100.0% allocg
     0.0   0.0% 100.0%      0.5 100.0% mcommoninit
     0.0   0.0% 100.0%      0.5 100.0% runtime.malg
     0.0   0.0% 100.0%      0.5 100.0% runtime.mpreinit
     0.0   0.0% 100.0%      0.5 100.0% runtime.rt0_go
     0.0   0.0% 100.0%      0.5 100.0% runtime.schedinit

1 个答案:

答案 0 :(得分:0)

深入挖掘测试标志,我找到了答案。我需要memprofilerate = 1和alloc_space

$ goapp test ./cloudstore -memprofilerate=1 -run=none -bench=. -memprofile=cloud.prof
$ go tool pprof --text --alloc_space cloudstore.test cloud.prof