0

大きなファイルの受信と GCS への送信に関連するメモリ リークが発生しているようです。appengine コードのメモリ使用量をプロファイリングするために pprof を使用しようとしています。私のテストでは appengine/aetest を使用しており、メモリ プロファイルを出力できますが、結果は役に立たないようです。

まず、ベンチマークを作成しました。これは非常に遅い操作であるため、一度しか実行されません。

$ 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

私の関数呼び出しは何も表示されず、この 0.5 MB の数値は明らかに正しくありません (12 MB のファイルを開いてアップロードしています)。実際のメモリ プロファイルを取得するにはどうすればよいですか?

$ go version
go version go1.3.1 linux/386
$ goapp version
go version go1.4.2 (appengine-1.9.25) linux/386
4

1 に答える 1

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
于 2015-11-12T20:19:22.097 に答える