diff --git a/controllers/nginx/pkg/cmd/controller/nginx.go b/controllers/nginx/pkg/cmd/controller/nginx.go index 8e6873c50a..e780d1dd94 100644 --- a/controllers/nginx/pkg/cmd/controller/nginx.go +++ b/controllers/nginx/pkg/cmd/controller/nginx.go @@ -25,6 +25,7 @@ import ( "net/http" "os" "os/exec" + "strconv" "syscall" "time" @@ -364,7 +365,11 @@ func (n *NGINXController) OnUpdate(ingressCfg ingress.Configuration) ([]byte, er // the limit of open files is per worker process // and we leave some room to avoid consuming all the FDs available - maxOpenFiles := (sysctlFSFileMax() / cfg.WorkerProcesses) - 1024 + wp, err := strconv.Atoi(cfg.WorkerProcesses) + if err != nil { + wp = 1 + } + maxOpenFiles := (sysctlFSFileMax() / wp) - 1024 setHeaders := map[string]string{} if cfg.ProxySetHeaders != "" { diff --git a/controllers/nginx/pkg/config/config.go b/controllers/nginx/pkg/config/config.go index 15fa300d3d..aab72dfbd3 100644 --- a/controllers/nginx/pkg/config/config.go +++ b/controllers/nginx/pkg/config/config.go @@ -19,6 +19,7 @@ package config import ( "fmt" "runtime" + "strconv" "github.com/golang/glog" @@ -252,7 +253,7 @@ type Configuration struct { // Defines the number of worker processes. By default auto means number of available CPU cores // http://nginx.org/en/docs/ngx_core_module.html#worker_processes - WorkerProcesses int `json:"worker-processes,omitempty"` + WorkerProcesses string `json:"worker-processes,omitempty"` } // NewDefault returns the default nginx configuration @@ -285,7 +286,7 @@ func NewDefault() Configuration { SSLSessionTickets: true, SSLSessionTimeout: sslSessionTimeout, UseGzip: true, - WorkerProcesses: runtime.NumCPU(), + WorkerProcesses: strconv.Itoa(runtime.NumCPU()), VtsStatusZoneSize: "10m", UseHTTP2: true, Backend: defaults.Backend{