Add Concurrency Limiter

This enables limiting concurrency. It is a naive approach which
will reject requests as soon as they exceed the maximum number
of in-flight requests.

It is a port of the following PR from the new watchdog code:
https://github.com/openfaas-incubator/of-watchdog/pull/54

Signed-off-by: Sargun Dhillon <sargun@sargun.me>
Signed-off-by: Lucas Roesler <roesler.lucas@gmail.com>
This commit is contained in:
Sargun Dhillon
2019-04-08 23:51:38 -07:00
committed by Alex Ellis
parent 45cf4db4cb
commit b019f6ca54
7 changed files with 112 additions and 4 deletions

View File

@ -59,7 +59,7 @@ func (m *MetricsServer) Serve(cancel chan bool) {
// InstrumentHandler returns a handler which records HTTP requests
// as they are made
func InstrumentHandler(next http.HandlerFunc, _http Http) http.HandlerFunc {
func InstrumentHandler(next http.Handler, _http Http) http.HandlerFunc {
return promhttp.InstrumentHandlerCounter(_http.RequestsTotal,
promhttp.InstrumentHandlerDuration(_http.RequestDurationHistogram, next))
}