appengine go1.11以降でgoでもプロファイラが使えるようなので初期設定だけやってみます。
内容的にはほぼ こちら の内容です。
Stackdriver Profiler は何ができるの?
Goの場合には、CPU、ヒープ、競合、スレッドに関するプロファイリングが可能です。
その他、競合プロファイリングやスレッドプロファイリング等があるようです。ここはこの記事では説明しません。
GAE/go アプリケーションにプロファイラを組み込む
ドキュメントには アプリケーションにパッケージをインポートしてから、コードのできるだけ早い段階でProfilerを初期化する
とあるので、mainロジックの早い段階で以下のように初期化すると良いと思います。
以下の例は ginを利用しています。
import ( "cloud.google.com/go/profiler" "github.com/gin-gonic/gin" "google.golang.org/appengine" "net/http" ) func main() { if err := profiler.Start(profiler.Config{ DebugLogging: true, }); err != nil { // TODO: Handle error. } route := gin.Default() http.Handle("/", route) route.GET("/", func(context *gin.Context){ context.String(http.StatusOK, "hello!") }) appengine.Main() }
プロファイラのAPIを有効化する
プロファイラを利用するためにはAPIの有効化が必要です。
WebUIから Profiler API
を検索し、有効化しても良いですし、
コマンドで gcloud services enable cloudprofiler.googleapis.com
と実行しても良いです。
いずれかの方法でAPIを有効化します。
作成したappengineアプリケーションをデプロイする
デプロイ方法は特にこの記事では説明しません。
デプロイ完了の後に、アプリケーションに何度かアクセスし、 hello!
とレスポンスが帰ってくることを確認します。
プロファイラを確認する
いよいよメインのプロファイラの確認です。
プロファイラの画面 にアクセスし、確認します。
CPU time
Heap
Allocated heap
Threads
まとめ
まずは使えるようになるという意味ではここまで。
また時間があればプロファイラの使い方の記事でも書こうかと思います。