Skip to content
This repository has been archived by the owner on Apr 17, 2019. It is now read-only.

[nginx-ingress-controller]: Improve performance (listen backlog=net.core.somaxconn) #1350

Merged
merged 4 commits into from
Jul 12, 2016
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ingress/controllers/nginx/nginx.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
1 change: 1 addition & 0 deletions ingress/controllers/nginx/nginx/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 12 additions & 0 deletions ingress/controllers/nginx/nginx/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand Down Expand Up @@ -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 {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please log it too

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

return 511
}

return maxConns
}