为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 分析 appengine 测试

Golang 分析 appengine 测试

Go
冉冉说 2021-11-22 15:41:56
我似乎有与接收大文件并将它们发送到 GCS 相关的内存泄漏。尝试使用 pprof 来分析我的 appengine 代码的内存使用情况。我的测试使用 appengine/aetest,我可以输出内存配置文件,但结果似乎没有显示任何有用的信息。首先我做了一个基准。这是一个非常慢的操作,所以它只运行一次。$ goapp test ./cloudstore -run=none -bench=. -memprofile=cloud.profBenchmarkLargeFile      1        54124706398 ns/op$ go tool pprof --text cloudstore.test cloud.prof Adjusting heap profiles for 1-in-524288 sampling rateTotal: 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我的函数调用都没有出现,这个 0.5 MB 的数字显然是不正确的(我正在打开一个 12 MB 的文件并上传它)。我如何获得真实的内存配置文件?$ go versiongo version go1.3.1 linux/386$ goapp versiongo version go1.4.2 (appengine-1.9.25) linux/386
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

深入研究测试标志,我找到了答案。我需要 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


查看完整回答
反对 回复 2021-11-22
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信