고진으로.pprof@Mac

7747 단어 Gopprof

입문


go의 분석 도구는 go-gin의 시스템에서 이동하는 방법을 사용합니다.
이곳의 패키지를 사용하면 go-gin의 단점으로 pprof의 단점을 노출할 수 있습니다.

준비

go get github.com/gin-gonic/gin
go get github.com/gin-contrib/pprof
graphviz, 설치하십시오.
brew install graphviz
현재 최신 라벨에 플로프 단점이 없기 때문에 마스터를 망라했습니다
dep 등을 사용하는 사람은 마스터를 명확하게 지정하는 것이 좋다.
Gopkg.toml
[[constraint]]
  name = "github.com/gin-contrib/pprof"
  branch = "master"

예제 코드

package main

import (
    "github.com/gin-contrib/pprof"
    "github.com/gin-gonic/gin"
    "net/http"
)

func main() {
    r := gin.Default()
    pprof.Register(r)

    r.GET("/", func(ctx *gin.Context) {
        for h := 0; h< 100000000; h++ {}
        ctx.JSON(http.StatusOK, gin.H{"status": "ok"})
    })

    r.Run(":8080")
}

실행


실행 후, 이러한 단점을 설정하는 것을 볼 수 있습니다.
[GIN-debug] [WARNING] Now Gin requires Go 1.6 or later and Go 1.7 will be required soon.
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.
[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /debug/pprof/             --> github.com/gin-contrib/pprof.pprofHandler.func1 (3 handlers)
[GIN-debug] GET    /debug/pprof/cmdline      --> github.com/gin-contrib/pprof.pprofHandler.func1 (3 handlers)
[GIN-debug] GET    /debug/pprof/profile      --> github.com/gin-contrib/pprof.pprofHandler.func1 (3 handlers)
[GIN-debug] POST   /debug/pprof/symbol       --> github.com/gin-contrib/pprof.pprofHandler.func1 (3 handlers)
[GIN-debug] GET    /debug/pprof/symbol       --> github.com/gin-contrib/pprof.pprofHandler.func1 (3 handlers)
[GIN-debug] GET    /debug/pprof/trace        --> github.com/gin-contrib/pprof.pprofHandler.func1 (3 handlers)
[GIN-debug] GET    /debug/pprof/block        --> github.com/gin-contrib/pprof.pprofHandler.func1 (3 handlers)
[GIN-debug] GET    /debug/pprof/goroutine    --> github.com/gin-contrib/pprof.pprofHandler.func1 (3 handlers)
[GIN-debug] GET    /debug/pprof/heap         --> github.com/gin-contrib/pprof.pprofHandler.func1 (3 handlers)
[GIN-debug] GET    /debug/pprof/mutex        --> github.com/gin-contrib/pprof.pprofHandler.func1 (3 handlers)
[GIN-debug] GET    /debug/pprof/threadcreate --> github.com/gin-contrib/pprof.pprofHandler.func1 (3 handlers)
[GIN-debug] GET    /                         --> main.main.func1 (3 handlers)
[GIN-debug] Listening and serving HTTP on :8080
그리고 vegeta 때리면서 프로프를 치세요.
echo "GET http://localhost:8080/" | vegeta attack -duration=1s -workers=1 -rate=1 | vegeta report
go tool pprof -http=":8888" localhost:8080/debug/pprof/profile
이런 느낌의 윤곽 결과가 나온다.(xhprof 같다)

참고로 go tool 에 첨부된 pprof 구글 저장소 는 최신 버전을 얻을 수 있습니다.Flame Grapth는 gotool에 아직 설치되지 않은 기능을 사용할 수 있습니다.

여기서 마치겠습니다.

좋은 웹페이지 즐겨찾기