- Published on
go-chiでpprof
pprofそのものについて
この辺が分かりやすい
go-chiでのpprof取得
go-chiにはpprof取得用のエンドポイントを追加するメソッドが用意されている
使い方についてもコード内にコメントがあるが、ミドルウェアの構成とルーティング構成の間にProfilerメソッドから得られるハンドラを/debug
(おそらく任意のパス)にマウントする
server.go
import "github.com/go-chi/middleware"
func MyService() http.Handler {
r := chi.NewRouter()
// ..ミドルウェアの構成
r.Mount("/debug", middleware.Profiler())
// ..ルーティングの構成
return r
}
この状態でデプロイすると、/debug
以下にnet/http
でpprofを有効にしたときと同様のエンドポイントが構成される。
Webサーバーのpprof分析については下の記事が端的で分かりやすい。
この記事の執筆時点で私はメモリリークっぽいところを見つけるに至っただけで、ほとんど仕様理解をできていない。そのうち理解度が高まったときにはpprofそのものや分析時の指標の見方など詳細に記事にしたい。