Limit number of concurrent connections

Go's net/http library has no limits in place for number of concurrent
requests currently being processed.  This can result in an enormous
number of goroutines being created and the read/write buffer pools
growing unbounded resulting in OOM situations.
This commit is contained in:
Paul Saab
2014-09-25 10:58:07 -07:00
parent 2b8dec07fe
commit 3f5b6b55b0
2 changed files with 5 additions and 0 deletions

View File

@@ -117,10 +117,14 @@ func Serve(cfg *config.Config, tkr *tracker.Tracker) {
}
glog.V(0).Info("Starting on ", cfg.Addr)
if cfg.HttpListenLimit != 0 {
glog.V(0).Info("Limiting connections to ", cfg.HttpListenLimit)
}
grace := &graceful.Server{
Timeout: cfg.RequestTimeout.Duration,
ConnState: srv.connState,
ListenLimit: cfg.HttpListenLimit,
Server: &http.Server{
Addr: cfg.Addr,
Handler: newRouter(srv),