banner
TerryHu

Terry's Site

bilibili

golangバックエンドサービスがダウンした?pprofを使おう

サービスの CPU / メモリ使用率が高すぎる、またはリクエストの応答が遅い場合、どのコードに問題があるのかを知りたいと思ったら、pprof はそのために役立ちます。

  1. まず、pprof ライブラリを事前にインポートする必要があります。とても簡単で、サーバーコードに数行追加するだけです。
import (
	"net/http"
	_ "net/http/pprof"
)

func main() {
	go func() {
		http.ListenAndServe("localhost:8080", nil)
	}()
	// メインプロセス
}
  1. 下の画像の profile をクリックすると、30 秒間のデータが収集され、profile ファイルに保存されます。

Pasted image 20250108223541

その後、次のコマンドを実行します。

go tool pprof -http :8081 ./profile
  1. http://localhost:8081/ui/を開きます。

Pasted image 20250107105500

左上隅で伝説のフレームグラフ (Flame Graph) を選択できます:

Pasted image 20250107105539

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。