2015-11-16 8 views
5

プロファイリングの私は、以前問題なくpprofツールを使用しました、それは素晴らしい仕事 - 今私はプロフィール何に関係なく、次のような出力が表示されます。golangツール - 同じ壊れ出力にかかわらず、ターゲット

Output from pprof

この例でプロファイルされているアプリケーションはおそらく40以上の関数呼び出しを行い、さらに複雑なアプリケーションはCPUとmemprofilingの両方に類似のコールグラフを生成しています。 Imはプロフィールしようとして

アプリは、私はすべてのWebアプリケーション一度に1分のためにそれらをプロファイリングし、200,000,000+要求を生成するためにWRKを使用していている=すべてのデータを返すと2XX応答

pprofが突然動作を停止しました数日前にosx yosemiteを実行しています。問題を解決しようとして、最近私はel capitanにアップグレードしましたが、結果は同じです。

注:これはちょうどグラフを呼び出すされていません - 呼び出しリストまたはtopコマンドは、同様に、不毛な結果をもたらすが、アプリケーション自体は正常に動作:「github.com/davecheney/:

(pprof) top 
269.97kB of 269.97kB total ( 100%) 
     flat flat% sum%  cum cum% 
    269.97kB 100% 100% 269.97kB 100% 
(pprof) 

を私は次のパッケージを使用しています明確にするため、外出先v1.5.1デベロッパー

を持つプロファイル」には、ここで私はプロファイルを生成するためにやっているものだ::

私はmain.goに上記のパッケージをインポートし、私のメインFUNCの先頭に次を配置します:

私は、このような出力が表示

go build -o orig /Users/danielwall/www/netlistener/application/adrequest.go /Users/danielwall/www/netlistener/application/cookie.go /Users/danielwall/www/netlistener/application/header.go /Users/danielwall/www/netlistener/application/lex.go /Users/danielwall/www/netlistener/application/main.go /Users/danielwall/www/netlistener/application/publisher_ids.go /Users/danielwall/www/netlistener/application/request.go /Users/danielwall/www/netlistener/application/response.go /Users/danielwall/www/netlistener/application/server.go /Users/danielwall/www/netlistener/application/sniff.go /Users/danielwall/www/netlistener/application/status.go /Users/danielwall/www/netlistener/application/transfer.go 

./orig 

を:私は、バイナリをビルドして実行します

defer profile.Start(profile.MemProfile).Stop() 

2015/11/16 11:39:49 profile: memory profiling enabled, /var/folders/26/2sj70_sn72l_93j7tf6r07gr0000gn/T/profile614358295/mem.pprof 

を今私は別の端末からアプリを動作します:

wrk -d60 -c10 -H "X-Device: desktop" -H "X-Country-Code: GB" "http://localhost:8189/app?id=111&schema=xml2&ad_type=auto&url=http://test.com/&category=bob" 
Running 1m test @ http://localhost:8189/app?id=111&schema=xml2&ad_type=auto&url=http://test.com/&category=bob 
    2 threads and 10 connections 
    Thread Stats Avg  Stdev  Max +/- Stdev 
    Latency 414.09us 0.92ms 55.36ms 95.66% 
    Req/Sec 17.57k  3.19k 22.59k 76.00% 
    2097764 requests in 1.00m, 684.20MB read 
Requests/sec: 34958.03 
Transfer/sec:  11.40MB 

60秒後に私のプロフィールを確認するために戻ってきます:

^C2015/11/16 12:05:20 profile: caught interrupt, stopping profiles 

go tool pprof /var/folders/26/2sj70_sn72l_93j7tf6r07gr0000gn/T/profile614358295/mem.pprof 

ここで何が起きているのでしょうか、それとも撮影/解決の問題から始めることができますか?

助けを歓迎します。

+1

* *どのようにプロファイルを作成するかを表示します。特に 'profile.Start'のあなたの設定です。 –

+0

最後に実行したすべてのものを含むように更新されました - おかげでありがとう – WebweaverD

+0

'go build'ではなく' go build'ファイルを1つずつフィードする理由は何ですか?また、 'go tool pprof'コールはバイナリ自体が欠落しているようです。' go tool pprof。/ orig/path/to/profile.pprof'でなければなりません。 –

答えて

7

go tool pprof呼び出しにバイナリ自体がありません。

go tool pprof ./orig /path/to/profile.pprof 
+1

(赤い面を受け入れる) – WebweaverD

関連する問題