Improve nginx performance to match listen backlog with net.core.somaxconn
This commit is contained in:
parent
ba964cdcda
commit
8b25cc67a5
3 changed files with 14 additions and 1 deletions
|
@ -276,7 +276,7 @@ http {
|
|||
|
||||
# default server, including healthcheck
|
||||
server {
|
||||
listen 8080 default_server reuseport;
|
||||
listen 8080 default_server reuseport backlog={{ .backlogSize }};
|
||||
|
||||
location /healthz {
|
||||
access_log off;
|
||||
|
|
|
@ -61,6 +61,7 @@ func (ngx *Manager) loadTemplate() {
|
|||
|
||||
func (ngx *Manager) writeCfg(cfg config.Configuration, ingressCfg IngressConfig) (bool, error) {
|
||||
conf := make(map[string]interface{})
|
||||
conf["backlogSize"] = sysctlSomaxconn()
|
||||
conf["upstreams"] = ingressCfg.Upstreams
|
||||
conf["servers"] = ingressCfg.Servers
|
||||
conf["tcpUpstreams"] = ingressCfg.TCPUpstreams
|
||||
|
|
|
@ -28,6 +28,7 @@ import (
|
|||
"github.com/golang/glog"
|
||||
"github.com/mitchellh/mapstructure"
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/util/sysctl"
|
||||
|
||||
"k8s.io/contrib/ingress/controllers/nginx/nginx/config"
|
||||
)
|
||||
|
@ -220,3 +221,14 @@ func diff(b1, b2 []byte) (data []byte, err error) {
|
|||
}
|
||||
return
|
||||
}
|
||||
|
||||
// sysctlSomaxconn returns the value of net.core.somaxconn, i.e.
|
||||
// maximum number of connections that can be queued for acceptance
|
||||
func sysctlSomaxconn() int {
|
||||
maxConns, err := sysctl.GetSysctl("net.core.somaxconn")
|
||||
if err != nil || maxConns < 512 {
|
||||
return 511
|
||||
}
|
||||
|
||||
return maxConns
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue