2012-12-04 6 views
7

Goプログラムでpprofを使用するには?Goプログラムでpprofを使用する方法

net/http/pprofという名前のGoパッケージがありますが、使用できません。

文書にはgo tool pprof http://localhost:6060/debug/pprof/heapと表示されますが動作しません。

そして、以下はどういう意味ですか?

import _ "net/http/pprof"

答えて

8

your commentに基づいて、正しいポート番号を使用していない可能性があります。

あなたは、私はあなたがhttp://localhost:9997でコマンドを実行したいと思います、http://localhost:9997でhttpサーバを実行している場合:

$ go tool pprof http://localhost:9997/debug/pprof/heap 

net/http/pprof pkg doc pageによると、あなたのアプリケーションが既にそうしないhttpサーバを実行している場合あなたのプログラムのどこかにimport _ "net/http/pprof"を含める必要があるだけです。 http://localhost:6060は、例として開始されたサーバーであり、ホストとポートは任意です。

import _ "net/http/pprof"は、パッケージがインポートされたものの、エクスポートされた識別子を使用しないことを意味します。 go language specによれば、これはその副作用のためだけにパッケージをインポートします。これらの副作用は、package's source filesで定義されたinit() functionsの実行と、明らかにregistered variablesを含んでいると思います。

また、あなたはこのブログの記事が参考に見つけるかもしれない:

http://blog.golang.org/2011/06/profiling-go-programs.html

1

何の手段を "動作しませんか"?代わりに何が期待され、何が観察されていますか?このツールのバージョンのヘルプを参照するには

実行

$ go tool pprof -h 

。私のローカルバージョンはリリース時(つまりその中間)ではなく、先端にあります。それは示しています。2つ目の質問に

(10:16) [email protected]:~$ go tool pprof -h 
Option h is ambiguous (heapcheck, help) 
Invalid option(s) 

Usage: 
pprof [options] <program> <profiles> 
    <profiles> is a space separated list of profile names. 
pprof [options] <symbolized-profiles> 
    <symbolized-profiles> is a list of profile files where each file contains 
    the necessary symbol mappings as well as profile data (likely generated 
    with --raw). 
pprof [options] <profile> 
    <profile> is a remote form. Symbols are obtained from host:port/pprof/symbol 

    Each name can be: 
    /path/to/profile  - a path to a profile file 
    host:port[/<service>] - a location of a service to get profile from 

    The /<service> can be /pprof/heap, /pprof/profile, /pprof/pmuprofile, 
         /pprof/growth, /pprof/contention, /pprof/wall, 
         /pprof/thread, or /pprof/filteredprofile. 
    For instance: 
    pprof http://myserver.com:80/pprof/heap 
    If /<service> is omitted, the service defaults to /pprof/profile (cpu profiling). 
pprof --symbols <program> 
    Maps addresses to symbol names. In this mode, stdin should be a 
    list of library mappings, in the same format as is found in the heap- 
    and cpu-profile files (this loosely matches that of /proc/self/maps 
    on linux), followed by a list of hex addresses to map, one per line. 

    For more help with querying remote servers, including how to add the 
    necessary server-side support code, see this filename (or one like it): 

    /usr/doc/google-perftools-1.5/pprof_remote_servers.html 

Options: 
    --cum    Sort by cumulative data 
    --base=<base>  Subtract <base> from <profile> before display 
    --interactive  Run in interactive mode (interactive "help" gives help) [default] 
    --seconds=<n>  Length of time for dynamic profiles [default=30 secs] 
    --add_lib=<file> Read additional symbols and line info from the given library 
    --lib_prefix=<dir> Comma separated list of library path prefixes 

Reporting Granularity: 
    --addresses   Report at address level 
    --lines    Report at source line level 
    --functions   Report at function level [default] 
    --files    Report at source file level 

Output type: 
    --text    Generate text report 
    --callgrind   Generate callgrind format to stdout 
    --gv    Generate Postscript and display 
    --web    Generate SVG and display 
    --list=<regexp>  Generate source listing of matching routines 
    --disasm=<regexp> Generate disassembly of matching routines 
    --symbols   Print demangled symbol names found at given addresses 
    --dot    Generate DOT file to stdout 
    --ps    Generate Postcript to stdout 
    --pdf    Generate PDF to stdout 
    --svg    Generate SVG to stdout 
    --gif    Generate GIF to stdout 
    --raw    Generate symbolized pprof data (useful with remote fetch) 

Heap-Profile Options: 
    --inuse_space  Display in-use (mega)bytes [default] 
    --inuse_objects  Display in-use objects 
    --alloc_space  Display allocated (mega)bytes 
    --alloc_objects  Display allocated objects 
    --show_bytes  Display space in bytes 
    --drop_negative  Ignore negative differences 

Contention-profile options: 
    --total_delay  Display total delay at each region [default] 
    --contentions  Display number of delays at each region 
    --mean_delay  Display mean delay at each region 

Call-graph Options: 
    --nodecount=<n>  Show at most so many nodes [default=80] 
    --nodefraction=<f> Hide nodes below <f>*total [default=.005] 
    --edgefraction=<f> Hide edges below <f>*total [default=.001] 
    --focus=<regexp> Focus on nodes matching <regexp> 
    --ignore=<regexp> Ignore nodes matching <regexp> 
    --scale=<n>   Set GV scaling [default=0] 
    --heapcheck   Make nodes with non-0 object counts 
         (i.e. direct leak generators) more visible 

Miscellaneous: 
    --tools=<prefix> Prefix for object tool pathnames 
    --test    Run unit tests 
    --help    This message 
    --version   Version information 

Environment Variables: 
    PPROF_TMPDIR  Profiles directory. Defaults to $HOME/pprof 
    PPROF_TOOLS   Prefix for object tools pathnames 

Examples: 

pprof /bin/ls ls.prof 
         Enters "interactive" mode 
pprof --text /bin/ls ls.prof 
         Outputs one line per procedure 
pprof --web /bin/ls ls.prof 
         Displays annotated call-graph in web browser 
pprof --gv /bin/ls ls.prof 
         Displays annotated call-graph via 'gv' 
pprof --gv --focus=Mutex /bin/ls ls.prof 
         Restricts to code paths including a .*Mutex.* entry 
pprof --gv --focus=Mutex --ignore=string /bin/ls ls.prof 
         Code paths including Mutex but not string 
pprof --list=getdir /bin/ls ls.prof 
         (Per-line) annotated source listing for getdir() 
pprof --disasm=getdir /bin/ls ls.prof 
         (Per-PC) annotated disassembly for getdir() 

pprof http://localhost:1234/ 
         Enters "interactive" mode 
pprof --text localhost:1234 
         Outputs one line per procedure for localhost:1234 
pprof --raw localhost:1234 > ./local.raw 
pprof --text ./local.raw 
         Fetches a remote profile for later analysis and then 
         analyzes it in text mode. 

FATAL ERROR: Invalid option(s) 
go tool pprof: exit status 1 
(10:16) [email protected]:~$ 

を: `インポート_「foo」という」イディオムは、fooの初期化の副作用のためにパッケージfooを輸入しています。これには、例えば、fooによって提供される機能を他のパッケージ内から使用可能に登録することが含まれます。具体的な例は、具体的な画像フォーマットhandling packages(下の「サブディレクトリ」を参照)と抽象的imageパッケージです。

+3

私が行くことで書かれたサーバーのAPIを持っている、と私はそれを最適化したいです。 'localhost:9997'でリッスンしているサーバを起動すると、どうすればpprofを使うことができますか?私は 'go tool pprof http:// localhost:6060/debug/pprof/heap'コマンドを使用していますが、' go tool pprof http:// localhost:6060/debug/pprof/heap http:// localhost: /usr/local/go/pkg/tool/linux_amd64/pprof行2957の置換えされていない値(s ///)の使用。 http:// localhost:6060/debug/pprof /シンボルが存在しません go tool pprof:終了ステータス1' – Codefor

関連する問題