Skip to content

How Nginx Ingress calculates the worker_processes and worker_rlimit_nofile

This document (000020079) is provided subject to the disclaimer at the end of this document.

Situation

Question

How Nginx Ingress calculates the worker_processes and worker_rlimit_nofile

Answer

About the parameters;

worker_processes

This parameter determines the number of Nginx worker processes to spawn during startup.

worker_rlimit_nofile

This parameter controls the open file limit per worker process.

More details can be found on Nginx documentation

Both worker_processes and worker_rlimit_nofile are calculated dynamically by Nginx Ingress during startup.

Based on the source code of Ingress Nginx;

worker_processes = Number of CPUs ($ grep -c processor /proc/cpuinfo)
worker_rlimit_nofile = ( RLIMIT_NOFILE / worker_processes ) - 1024

where RLIMIT_NOFILE is the maximum allowed open files by the process ( ulimit -n )

From Nginx Ingress shell, you can verify the same.

# kubectl exec -it  -n ingress-nginx nginx-ingress-controller-8ln2b -- bash
bash-5.0$ ulimit -n
1048576
bash-5.0$
bash-5.0$ grep -c processor /proc/cpuinfo
2        <<---- worker_processes
bash-5.0$
bash-5.0$ echo $(((1048576/2)-1024))
523264    <<--- worker_rlimit_nofile
bash-5.0$
bash-5.0$ egrep "worker_processes|worker_rlimit_nofile" /etc/nginx/nginx.conf
worker_processes 2;
worker_rlimit_nofile 523264;
bash-5.0$

Disclaimer

This Support Knowledgebase provides a valuable tool for SUSE customers and parties interested in our products and solutions to acquire information, ideas and learn from one another. Materials are provided for informational, personal or non-commercial use within your organization and are presented "AS IS" WITHOUT WARRANTY OF ANY KIND.