mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
Merge pull request #6995 from gyuho/etcd-tester-pprof
etcd-tester: add 'enable-pprof' option
This commit is contained in:
commit
cc37beff35
@ -18,6 +18,7 @@ import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/http/pprof"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
@ -34,6 +35,8 @@ const (
|
||||
defaultFailpointPort = 2381
|
||||
)
|
||||
|
||||
const pprofPrefix = "/debug/pprof-tester"
|
||||
|
||||
func main() {
|
||||
endpointStr := flag.String("agent-endpoints", "localhost:9027", "HTTP RPC endpoints of agents. Do not specify the schema.")
|
||||
clientPorts := flag.String("client-ports", "", "etcd client port for each agent endpoint")
|
||||
@ -51,6 +54,7 @@ func main() {
|
||||
stresserType := flag.String("stresser", "keys,lease", "comma separated list of stressers (keys, lease, v2keys, nop).")
|
||||
failureTypes := flag.String("failures", "default,failpoints", "specify failures (concat of \"default\" and \"failpoints\").")
|
||||
externalFailures := flag.String("external-failures", "", "specify a path of script for enabling/disabling an external fault injector")
|
||||
enablePprof := flag.Bool("enable-pprof", false, "true to enable pprof")
|
||||
flag.Parse()
|
||||
|
||||
eps := strings.Split(*endpointStr, ",")
|
||||
@ -131,6 +135,19 @@ func main() {
|
||||
sh := statusHandler{status: &t.status}
|
||||
http.Handle("/status", sh)
|
||||
http.Handle("/metrics", prometheus.Handler())
|
||||
|
||||
if *enablePprof {
|
||||
http.Handle(pprofPrefix+"/", http.HandlerFunc(pprof.Index))
|
||||
http.Handle(pprofPrefix+"/profile", http.HandlerFunc(pprof.Profile))
|
||||
http.Handle(pprofPrefix+"/symbol", http.HandlerFunc(pprof.Symbol))
|
||||
http.Handle(pprofPrefix+"/cmdline", http.HandlerFunc(pprof.Cmdline))
|
||||
http.Handle(pprofPrefix+"/trace", http.HandlerFunc(pprof.Trace))
|
||||
http.Handle(pprofPrefix+"/heap", pprof.Handler("heap"))
|
||||
http.Handle(pprofPrefix+"/goroutine", pprof.Handler("goroutine"))
|
||||
http.Handle(pprofPrefix+"/threadcreate", pprof.Handler("threadcreate"))
|
||||
http.Handle(pprofPrefix+"/block", pprof.Handler("block"))
|
||||
}
|
||||
|
||||
go func() { plog.Fatal(http.ListenAndServe(":9028", nil)) }()
|
||||
|
||||
t.runLoop()
|
||||
|
Loading…
x
Reference in New Issue
Block a user