0
0
Fork 0
mirror of https://github.com/matrix-org/dendrite synced 2024-06-10 16:39:04 +02:00

Add PPROFLISTEN (#1019)

* Add PPROFLISTEN env var

* Direct logging to more useful places

* Space
This commit is contained in:
Neil Alexander 2020-05-11 18:21:39 +01:00 committed by GitHub
parent 0c892d59fa
commit 32624697fd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 15 additions and 2 deletions

View file

@ -15,8 +15,6 @@
package main
import (
_ "net/http/pprof"
"github.com/matrix-org/dendrite/common/basecomponent"
"github.com/matrix-org/dendrite/common/keydb"
"github.com/matrix-org/dendrite/roomserver"

View file

@ -42,6 +42,8 @@ import (
federationSenderAPI "github.com/matrix-org/dendrite/federationsender/api"
roomserverAPI "github.com/matrix-org/dendrite/roomserver/api"
"github.com/sirupsen/logrus"
_ "net/http/pprof"
)
// BaseDendrite is a base for creating new instances of dendrite. It parses
@ -71,6 +73,7 @@ const HTTPClientTimeout = time.Second * 30
func NewBaseDendrite(cfg *config.Dendrite, componentName string) *BaseDendrite {
common.SetupStdLogging()
common.SetupHookLogging(cfg.Logging, componentName)
common.SetupPprof()
closer, err := cfg.SetupTracing("Dendrite" + componentName)
if err != nil {

View file

@ -18,6 +18,7 @@ import (
"context"
"fmt"
"io"
"net/http"
"os"
"path"
"path/filepath"
@ -79,6 +80,17 @@ func callerPrettyfier(f *runtime.Frame) (string, string) {
return funcname, filename
}
// SetupPprof starts a pprof listener. We use the DefaultServeMux here because it is
// simplest, and it gives us the freedom to run pprof on a separate port.
func SetupPprof() {
if hostPort := os.Getenv("PPROFLISTEN"); hostPort != "" {
logrus.Warn("Starting pprof on ", hostPort)
go func() {
logrus.WithError(http.ListenAndServe(hostPort, nil)).Error("Failed to setup pprof listener")
}()
}
}
// SetupStdLogging configures the logging format to standard output. Typically, it is called when the config is not yet loaded.
func SetupStdLogging() {
logrus.SetReportCaller(true)