Replace http.Serve() with http.Server{} configured with timeouts to
address G114 gosec findings (HTTP server without timeouts). This
prevents potential slowloris attacks and resource exhaustion.
Changes:
- Add ReadTimeout, WriteTimeout, IdleTimeout (5s each) to HTTP servers
- Use srv.Shutdown(ctx) for graceful shutdown instead of ln.Close()
- Follow existing pattern from plugin/metrics
Fixes part of #7793
Signed-off-by: Azeez Syed <syedazeez337@gmail.com>
pprof
Name
pprof - publishes runtime profiling data at endpoints under /debug/pprof.
Description
You can visit /debug/pprof on your site for an index of the available endpoints. By default it
will listen on localhost:6053.
This is a debugging tool. Certain requests (such as collecting execution traces) can be slow. If you use pprof on a live server, consider restricting access or enabling it only temporarily.
This plugin can only be used once per Server Block.
Syntax
pprof [ADDRESS]
Optionally pprof takes an address; the default is localhost:6053.
An extra option can be set with this extended syntax:
pprof [ADDRESS] {
block [RATE]
}
blockoption enables block profiling, RATE defaults to 1. RATE must be a positive value. See Diagnostics, chapter profiling and runtime.SetBlockProfileRate for what block profiling entails.
Examples
Enable a pprof endpoint:
. {
pprof
}
And use the pprof tool to get statistics: go tool pprof http://localhost:6053.
Listen on an alternate address:
. {
pprof 10.9.8.7:6060
}
Listen on an all addresses on port 6060, and enable block profiling
. {
pprof :6060 {
block
}
}
See Also
See Go's pprof documentation and Profiling Go Programs.
See runtime.SetBlockProfileRate for background on block profiling.