我有客户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必须大于配置文件写入时间.
抱歉我的英语不好.