고진으로.pprof@Mac
입문
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에 아직 설치되지 않은 기능을 사용할 수 있습니다.
여기서 마치겠습니다.
Reference
이 문제에 관하여(고진으로.pprof@Mac), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/junpayment/items/23934772f5385304eba8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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에 아직 설치되지 않은 기능을 사용할 수 있습니다.
여기서 마치겠습니다.
Reference
이 문제에 관하여(고진으로.pprof@Mac), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/junpayment/items/23934772f5385304eba8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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에 아직 설치되지 않은 기능을 사용할 수 있습니다.여기서 마치겠습니다.
Reference
이 문제에 관하여(고진으로.pprof@Mac), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/junpayment/items/23934772f5385304eba8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)