golang - net / http / pprof不起作用

时间:2013-12-31 08:26:52

标签: go pprof

我有客户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 handler:

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))
}

处理程序在我的代码中不起作用。

1 个答案:

答案 0 :(得分:9)

将“WriteTimeout”设置为小于配置文件写入时间。

在pprof.StartCPUProfile()执行,它已经开始写,请参阅:

因此http.WriteTimeout必须大于配置文件写入时间。

抱歉我的英语不好。