feat: server.Server 的 HTTP 请求支持慢消息检测
This commit is contained in:
parent
b87df072fc
commit
36a333379e
|
@ -3,6 +3,7 @@ package server
|
||||||
import (
|
import (
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type HandlerFunc[Context any] func(ctx Context)
|
type HandlerFunc[Context any] func(ctx Context)
|
||||||
|
@ -24,7 +25,9 @@ func (slf *HttpRouter[Context]) handlesConvert(handlers []HandlerFunc[Context])
|
||||||
slf.srv.messageCounter.Add(-1)
|
slf.srv.messageCounter.Add(-1)
|
||||||
}()
|
}()
|
||||||
hc := slf.packer(ctx)
|
hc := slf.packer(ctx)
|
||||||
|
var now = time.Now()
|
||||||
handler(hc)
|
handler(hc)
|
||||||
|
slf.srv.low(nil, now, time.Second, "HTTP ["+ctx.Request.Method+"] "+ctx.Request.RequestURI)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return handles
|
return handles
|
||||||
|
|
|
@ -568,10 +568,16 @@ func (slf *Server) pushMessage(message *Message) {
|
||||||
slf.messageChannel <- message
|
slf.messageChannel <- message
|
||||||
}
|
}
|
||||||
|
|
||||||
func (slf *Server) low(message *Message, present time.Time, expect time.Duration) {
|
func (slf *Server) low(message *Message, present time.Time, expect time.Duration, messageReplace ...string) {
|
||||||
cost := time.Since(present)
|
cost := time.Since(present)
|
||||||
if cost > expect {
|
if cost > expect {
|
||||||
log.Warn("Server", log.String("type", "low-message"), log.String("cost", cost.String()), log.String("message", message.String()), log.Stack("stack"))
|
var m = "unknown"
|
||||||
|
if message != nil {
|
||||||
|
m = message.String()
|
||||||
|
} else if len(messageReplace) > 0 {
|
||||||
|
m = messageReplace[0]
|
||||||
|
}
|
||||||
|
log.Warn("Server", log.String("type", "low-message"), log.String("cost", cost.String()), log.String("message", m), log.Stack("stack"))
|
||||||
slf.OnMessageLowExecEvent(message, cost)
|
slf.OnMessageLowExecEvent(message, cost)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue