mirror of
https://github.com/weaveworks/scope.git
synced 2026-07-28 17:51:21 +00:00
Merge pull request #1681 from weaveworks/block-profiling-1672
Add flag for block profiling
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
_ "net/http/pprof"
|
||||
"net/url"
|
||||
"os"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -199,6 +200,7 @@ func pipeRouterFactory(userIDer multitenant.UserIDer, pipeRouterURL, consulInf s
|
||||
func appMain(flags appFlags) {
|
||||
setLogLevel(flags.logLevel)
|
||||
setLogFormatter(flags.logPrefix)
|
||||
runtime.SetBlockProfileRate(flags.blockProfileRate)
|
||||
|
||||
defer log.Info("app exiting")
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
|
||||
@@ -111,6 +111,8 @@ type appFlags struct {
|
||||
memcachedExpiration time.Duration
|
||||
userIDHeader string
|
||||
|
||||
blockProfileRate int
|
||||
|
||||
awsCreateTables bool
|
||||
consulInf string
|
||||
}
|
||||
@@ -197,6 +199,8 @@ func main() {
|
||||
flag.StringVar(&flags.app.memcachedService, "app.memcached.service", "memcached", "SRV service used to discover memcache servers.")
|
||||
flag.StringVar(&flags.app.userIDHeader, "app.userid.header", "", "HTTP header to use as userid")
|
||||
|
||||
flag.IntVar(&flags.app.blockProfileRate, "app.block.profile.rate", 0, "If more than 0, enable block profiling. The profiler aims to sample an average of one blocking event per rate nanoseconds spent blocked.")
|
||||
|
||||
flag.BoolVar(&flags.app.awsCreateTables, "app.aws.create.tables", false, "Create the tables in DynamoDB")
|
||||
flag.StringVar(&flags.app.consulInf, "app.consul.inf", "", "The interface who's address I should advertise myself under in consul")
|
||||
|
||||
|
||||
@@ -72,6 +72,12 @@ To collect the CPU profile of the Scope Probe:
|
||||
|
||||
go tool pprof http://localhost:4041/debug/pprof/profile
|
||||
|
||||
To collect a blocking profile of the Scope App, make sure you have launched
|
||||
Scope with `--app.block.profile.rate=N` (where `N` is the number of
|
||||
nanoseconds between samples) and then:
|
||||
|
||||
go tool pprof http://localhost:4040/debug/pprof/block
|
||||
|
||||
If you don't have `go` installed, you can use a Docker container instead:
|
||||
|
||||
To collect the memory profile of the Scope App:
|
||||
|
||||
Reference in New Issue
Block a user