当前位置: 首页>>代码示例>>Golang>>正文


Golang pprof.Profiles函数代码示例

本文整理汇总了Golang中runtime/pprof.Profiles函数的典型用法代码示例。如果您正苦于以下问题:Golang Profiles函数的具体用法?Golang Profiles怎么用?Golang Profiles使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了Profiles函数的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: init

func init() {
	f, err := os.Create("cpu.prof")
	if err != nil {
		panic(err)
	}

	err = pprof.StartCPUProfile(f)
	if err != nil {
		panic(err)
	}

	go func() {
		tick := time.Tick(time.Minute)
		for {
			select {
			case signal := <-profileCleanup:
				pprof.StopCPUProfile()
				for _, profile := range pprof.Profiles() {
					f, err := os.Create(profile.Name() + ".prof")
					if err != nil {
						panic(err)
					}
					err = profile.WriteTo(f, map[string]int{
						"threadcreate": 1,
						"goroutine":    2,
					}[profile.Name()])
					if err != nil {
						panic(err)
					}
					f.Close()
				}
				if signal == os.Interrupt {
					os.Exit(0)
				} else {
					clientCanExit <- struct{}{}
				}

			case <-tick:
				for _, profile := range pprof.Profiles() {
					f, err := os.Create(profile.Name() + ".prof")
					if err != nil {
						panic(err)
					}
					err = profile.WriteTo(f, map[string]int{
						"threadcreate": 1,
						"goroutine":    2,
					}[profile.Name()])
					if err != nil {
						panic(err)
					}
					f.Close()
				}
			}
		}
	}()

	signal.Notify(profileCleanup, os.Interrupt)
}
开发者ID:Nightgunner5,项目名称:gogame,代码行数:58,代码来源:profile.go

示例2: profile

// URL /profile/
func profile(req *Request) (int, interface{}) {
	r := JSON{}
	for _, p := range pprof.Profiles() {
		r[p.Name()] = p.Count()
	}
	return http.StatusOK, r
}
开发者ID:sdgdsffdsfff,项目名称:eru-agent,代码行数:8,代码来源:http.go

示例3: handler

func handler() http.Handler {
	info := struct {
		Profiles []*pprof.Profile
		Token    string
	}{
		Profiles: pprof.Profiles(),
	}

	h := func(w http.ResponseWriter, r *http.Request) {
		// get the last path, allowing this to be mounted under any prefix
		split := strings.Split(r.URL.Path, "/")
		name := split[len(split)-1]

		switch name {
		case "":
			// Index page.
			if err := indexTmpl.Execute(w, info); err != nil {
				fmt.Fprintf(w, "something went wrong - %s", err)
				return
			}
		case "cmdline":
			nhpprof.Cmdline(w, r)
		case "profile":
			nhpprof.Profile(w, r)
		case "trace":
			nhpprof.Trace(w, r)
		case "symbol":
			nhpprof.Symbol(w, r)
		default:
			// Provides access to all profiles under runtime/pprof
			nhpprof.Handler(name).ServeHTTP(w, r)
		}
	}
	return http.HandlerFunc(h)
}
开发者ID:fortytw2,项目名称:weasel,代码行数:35,代码来源:weasel.go

示例4: main

func main() {
	logger.Println("Start...")
	//
	profs := pprof.Profiles()
	for _, p := range profs {
		logger.Println(p.Name())
	}
	logger.Println("End...")
}
开发者ID:gmallard,项目名称:go-samp,代码行数:9,代码来源:showpprof.go

示例5: Index

// Index responds with the pprof-formatted profile named by the request.
// For example, "/debug/pprof/heap" serves the "heap" profile.
// Index responds to a request for "/debug/pprof/" with an HTML page
// listing the available profiles.
func Index(w http.ResponseWriter, r *http.Request) {
	if strings.HasPrefix(r.URL.Path, "/debug/pprof/") {
		name := strings.TrimPrefix(r.URL.Path, "/debug/pprof/")
		if name != "" {
			handler(name).ServeHTTP(w, r)
			return
		}
	}

	profiles := pprof.Profiles()
	if err := indexTmpl.Execute(w, profiles); err != nil {
		log.Print(err)
	}
}
开发者ID:klueska,项目名称:go-akaros,代码行数:18,代码来源:pprof.go

示例6: ReadDirAll

// ReadDirAll implements the ReadDirAll interface.
func (pl ProfileList) ReadDirAll(_ context.Context) (res []fuse.Dirent, err error) {
	profiles := pprof.Profiles()
	res = make([]fuse.Dirent, 0, len(profiles))
	for _, p := range profiles {
		name := p.Name()
		if !libfs.IsSupportedProfileName(name) {
			continue
		}
		res = append(res, fuse.Dirent{
			Type: fuse.DT_Dir,
			Name: name,
		})
	}
	return res, nil
}
开发者ID:keybase,项目名称:kbfs-beta,代码行数:16,代码来源:profilelist.go

示例7: Index

// Index responds with the pprof-formatted profile named by the request.
// For example, "/debug/pprof/heap" serves the "heap" profile.
// Index responds to a request for "/debug/pprof/" with an HTML page
// listing the available profiles.
func Index(e echo.Context) {
	r := e.Request()
	w := e.Response()
	if strings.HasPrefix(r.URL().Path(), "/debug/pprof/") {
		name := strings.TrimPrefix(r.URL().Path(), "/debug/pprof/")
		if name != "" {
			handler(name).ServeHTTP(e)
			return
		}
	}

	profiles := pprof.Profiles()
	if err := indexTmpl.Execute(w, profiles); err != nil {
		log.Print(err)
	}
}
开发者ID:webx-top,项目名称:webx,代码行数:20,代码来源:pprof.go

示例8: Index

// Index responds with the pprof-formatted profile named by the request.
// For example, "/debug/pprof/heap" serves the "heap" profile.
// Index responds to a request for "/debug/pprof/" with an HTML page
// listing the available profiles.
func Index(request *http.Request, pathFragments map[string]string, reply *web.Reply) {
	if strings.HasPrefix(request.URL.Path, "/debug/pprof/") {
		name := strings.TrimPrefix(request.URL.Path, "/debug/pprof/")
		if name != "" {
			handler(name).RequestHandler(request, pathFragments, reply)
			return
		}
	}
	r, w := io.Pipe()
	go func() {
		defer w.Close()
		profiles := pprof.Profiles()
		if err := indexTmpl.Execute(w, profiles); err != nil {
			logger.Error("出现错误:%s", err)
		}
	}()
	reply.With(r)
}
开发者ID:nymbian,项目名称:web,代码行数:22,代码来源:pprof.go

示例9: ServeHTTP

// ServeHTTP serves http request.
func (h DebugIndexHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	if strings.HasPrefix(r.URL.Path, h.Path) {
		name := strings.TrimPrefix(r.URL.Path, h.Path)
		if name != "" {
			debugHandler(name).ServeHTTP(w, r)
			return
		}
	}

	profiles := pprof.Profiles()
	if err := debugIndexTmpl.Execute(w, struct {
		Profiles []*pprof.Profile
		Path     string
	}{
		Profiles: profiles,
		Path:     h.Path,
	}); err != nil {
		log.Printf("debug intex handler: %s", err)
	}
}
开发者ID:janos,项目名称:httphandlers,代码行数:21,代码来源:debug.go

示例10: ServeHTTP

// See pprof_remote_servers.html bundled with the gperftools.
func (p Profiler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	switch r.URL.Path {
	case "cmdline":
		for _, arg := range os.Args {
			fmt.Fprintf(w, "%v\n", arg)
		}
	case "profile":
		sec := r.URL.Query()["seconds"]
		if len(sec) > 0 {
			dur, _ := strconv.Atoi(sec[0])
			buf := new(bytes.Buffer)
			pprof.StartCPUProfile(buf)
			time.Sleep(time.Duration(dur) * time.Second)
			pprof.StopCPUProfile()

			buf.WriteTo(w)
		} else {
			webFail(w, "invalid profile request, expected seconds=XX")
		}
	case "memstats":
		var m runtime.MemStats
		runtime.ReadMemStats(&m)
		buf, err := json.MarshalIndent(m, "", "  ")
		if err != nil {
			webFail(w, "failed to marshal object: %v", err)
		} else {
			w.Write(buf)
		}
	case "symbol":
		if r.Method == "GET" {
			fmt.Fprintf(w, "num_symbols: 1")
			return
		}

		buf, err := ioutil.ReadAll(r.Body)
		if err != nil {
			webFail(w, "failed to read request body: %v", err)
			return
		}

		for _, strAddr := range strings.Split(string(buf), "+") {
			strAddr = strings.Trim(strAddr, " \r\n\t")
			desc := "unknownFunc"
			addr, err := strconv.ParseUint(strAddr, 0, 64)
			if err == nil {
				fn := runtime.FuncForPC(uintptr(addr))
				if fn != nil {
					file, line := fn.FileLine(uintptr(addr))
					desc = fmt.Sprintf("%v:%v:%v", path.Base(file), line, fn.Name())
				}
			}
			fmt.Fprintf(w, "%v\t%v\n", strAddr, desc)
		}
	case "":
		for _, p := range pprof.Profiles() {
			fmt.Fprintf(w, "%v\n", p.Name())
		}
	default:
		for _, p := range pprof.Profiles() {
			if p.Name() == r.URL.Path {
				p.WriteTo(w, 0)
				return
			}
		}
		webFail(w, "unknown profile: %v", r.URL.Path)
	}
}
开发者ID:julochrobak,项目名称:comp,代码行数:68,代码来源:web.go

示例11: profiles

func profiles() {
	for _, p := range pprof.Profiles() {
		fmt.Println(p.Name())
	}
}
开发者ID:taysom,项目名称:va,代码行数:5,代码来源:walk1.go


注:本文中的runtime/pprof.Profiles函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。