我有客户http服务:
s := &http.Server{ Addr: config.Port,Handler: Controller.Log(http.DefaultServeMux),ReadTimeout: 3 * time.Second,WriteTimeout: 3 * time.Second,} http.HandleFunc("/exapmle/router/",exampleFunc) err := s.ListenAndServe() if err != nil { log.Critical(err) os.Exit(1) }
它不起作用:
go tool pprof http://localhost:8201/debug/pprof/profile
返回错误:
Failed to fetch http://localhost:8201/debug/pprof/profile?seconds=30
谢谢.
编辑:
我认为问题是我重写默认的http服务器,net / http / pprof包注入http处理程序:
func init() { http.Handle("/debug/pprof/",http.HandlerFunc(Index)) http.Handle("/debug/pprof/cmdline",http.HandlerFunc(Cmdline)) http.Handle("/debug/pprof/profile",http.HandlerFunc(Profile)) http.Handle("/debug/pprof/symbol",http.HandlerFunc(Symbol)) }
处理程序在我的代码中不起作用.
您将“WriteTimeout”设置为小于配置文件写入时间.
在pprof.StartcpuProfile()执行,它已经开始写,请参阅:
> http://golang.org/src/pkg/runtime/pprof/pprof.go#L565
> http://golang.org/src/pkg/runtime/pprof/pprof.go#L594
因此http.WriteTimeout必须大于配置文件写入时间.
抱歉我的英语不好.