pprofはGo標準のProfilingツール。
net/http
にも対応していて、良い感じのエンドポイントを立ててくれる。
そこからデータをとってきて分析する。
こんなのが見れる
アプリケーションにおいて支配的な関数がわかるので結構重宝する
標準のhttp.ListenAndServe()
てきなものを使っている場合はimportするだけでおk
import _ "net/http/pprof"
ginとかechoとかの場合はそれぞれが対応するライブラリを出してくれている
公式Docsに詳しい使い方が載っている
go tool pprof -http=":8888" http://localhost:8080/debug/pprof/profile?seconds=30
WebUIが8888で立つ。
他にも色々なエンドポイントがある
http://localhost:8080/debug/pprof/heap
http://localhost:8080/debug/pprof/block
http://localhost:8080/debug/pprof/goroutine
http://localhost:8080/debug/pprof/threadcreate
http://localhost:8080/debug/pprof/mutex
良い感じに負荷をグラフィカルに表示してくれる君
bash <(curl -Ss https://my-netdata.io/kickstart.sh) all
これをみて
リアルタイムなリソースモニタリングツールのnetdataを試してみた
ポートは19999でListenされている