DefaultServeMux以外でpprofを使う方法

概要

net/http/pprofをDefaultServeMux以外(Goの標準のルーター以外)で使う方法についてメモ。

ハマりどころ

pprofをblank importするだけではだめ。

DefaultServeMux以外のルーターを使う場合はblank importするだけではpprofが利用できるようにならない。

net/http/pprofを参照すると、下記のように記載されている。

If you are not using DefaultServeMux, you will have to register handlers with the mux you are using.

解決策

下記は自分の自作ルーターbmf-san/goblinを使った例。

上述のようにルーティングを自分で設定し、pprofのHanderを設定してあげる必要がある。

httprouterの場合であれば、下記issueが参考になる。 pprof issue with httprouter #236

余談

pyroscopeでGoのプロファイリングをPull型で設定しようとしたときにハマった。