From 3ee868da6dfdf74de99236dce7e7a077e2f015b9 Mon Sep 17 00:00:00 2001 From: Qian Wang Date: Mon, 21 Jan 2019 21:17:26 +0000 Subject: [PATCH] Make pprof optional to halve the binary size --- Makefile | 5 +++++ cmd/ck-server/ck-server.go | 9 +-------- cmd/ck-server/pprof.go | 9 +++++++++ cmd/ck-server/pprof_debug.go | 18 ++++++++++++++++++ 4 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 cmd/ck-server/pprof.go create mode 100644 cmd/ck-server/pprof_debug.go diff --git a/Makefile b/Makefile index 6ebb163..a16c9e6 100644 --- a/Makefile +++ b/Makefile @@ -16,6 +16,11 @@ server: go build -ldflags "-X main.version=${version}" ./cmd/ck-server mv ck-server* ./build +server_pprof: + mkdir -p build + go build -ldflags "-X main.version=${version}" -tags pprof ./cmd/ck-server + mv ck-server* ./build + install: mv build/ck-* /usr/local/bin diff --git a/cmd/ck-server/ck-server.go b/cmd/ck-server/ck-server.go index b1d788c..c2298f4 100644 --- a/cmd/ck-server/ck-server.go +++ b/cmd/ck-server/ck-server.go @@ -8,10 +8,7 @@ import ( "io" "log" "net" - "net/http" - _ "net/http/pprof" "os" - "runtime" "strings" "time" @@ -237,11 +234,7 @@ func main() { } if *pprofAddr != "" { - runtime.SetBlockProfileRate(5) - go func() { - log.Println(http.ListenAndServe(*pprofAddr, nil)) - }() - log.Println("pprof listening on " + *pprofAddr) + startPprof(*pprofAddr) } if *localAddr == "" { diff --git a/cmd/ck-server/pprof.go b/cmd/ck-server/pprof.go new file mode 100644 index 0000000..2e0b7ee --- /dev/null +++ b/cmd/ck-server/pprof.go @@ -0,0 +1,9 @@ +// +build !pprof + +package main + +import "log" + +func startPprof(x string) { + log.Println("pprof not available in release builds to reduce binary size") +} diff --git a/cmd/ck-server/pprof_debug.go b/cmd/ck-server/pprof_debug.go new file mode 100644 index 0000000..90b0356 --- /dev/null +++ b/cmd/ck-server/pprof_debug.go @@ -0,0 +1,18 @@ +// +build pprof + +package main + +import ( + "log" + "net/http" + _ "net/http/pprof" + "runtime" +) + +func startPprof(pprofAddr string) { + runtime.SetBlockProfileRate(5) + go func() { + log.Println(http.ListenAndServe(pprofAddr, nil)) + }() + log.Println("pprof listening on " + pprofAddr) +}