package
1.12.6
Repository: https://github.com/go-dev-frame/sponge.git
Documentation: pkg.go.dev

# README

prof

Wrap the official net/http/pprof route and add the profile io wait time route.


Example of use

sampling profile by http

    import "github.com/go-dev-frame/sponge/pkg/prof"

    mux := http.NewServeMux()
    prof.Register(mux, prof.WithPrefix("/myServer"), prof.WithIOWaitTime())

    httpServer := &http.Server{
        Addr:    ":8080",
        Handler: mux,
    }
	
    if err := httpServer.ListenAndServe(); err != nil && err != http.ErrServerClosed {
        panic("listen and serve error: " + err.Error())
    }

sampling profile by system notification signal

import "github.com/go-dev-frame/sponge/pkg/prof"

func WaitSign() {
	p := prof.NewProfile()

	signals := make(chan os.Signal, 1)
	signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP, syscall.SIGTRAP)

	for {
		v := <-signals
		switch v {
		case syscall.SIGTRAP:
			p.StartOrStop()

		case syscall.SIGINT, syscall.SIGTERM, syscall.SIGHUP:
			os.Exit(0)
		}
	}
}
# view the program's pid
ps -aux | grep serverName

# notification of sampling profile, default 60s, in less than 60s, if the second execution will actively stop sampling profile
kill -trap pid

# Functions

EnableTrace enable sampling trace profile.
NewProfile create a new profile.
Register pprof server mux.
SetDurationSecond set sampling profile duration.
WithIOWaitTime enable IO wait time.
WithPrefix set route defaultPrefix.

# Type aliases

Option set defaultPrefix func.