基于 LNMP 的 Nginx 百万并发之路 (二)配置文件 main 段主参数

Nginx 中 main 段参数为全局参数, httpserver段的皆在 main 段参数的作用之下。

timer_resolution time
timer_resolution 80ms;

worker 子进程内部计时器精度,调整时间间隔越大, worker 子进程和外部应用程序之间的切换时间越长,也就避免了过度切换,保证了高性能。

worker_rlimit_nofile number
worker_rlimit_nofile 50000;

设定 worker 子进程可以打开的最大文件句柄数。如果想要 Nginx 承载更多的并发可以设置更大的数字。端口最大数为 65335,但理论上 tcp 连接数会远超过 65535,这是因为理论上的 ip 地址数为 2 的 ip位数的次方,相应的理论 tcp 连接数与之一样的多。由于 Nginx 分配请求并非均衡,最好将此数字设置为尽可能的高以避免超过 worker 子进程的最大限制而返回服务器 502 错误。

worker_rlimit_core size
worker_rlimit_core 80M;

设定 worker 子进程异常终止后记录分析问的 core 文件。

worker_processes number | auto
worker_processes number 4;
worker_processes number auto;

设定 Nginx 启动的 woker 子进程数量,auto 表示根据 cpu 个数自动设定。可以由 lscpu 命令查看 cpu 个数。

worker_cpu_affinity cpu1 cpu2 ...
worker_cpu_affinity 0001 0010 0100 1000

过多上下文切换造成不必要的性能开销,绑定 cpu 可以利用 cpu 缓存保持高性能。

worker_priority number
worker_priority number -5;

设定 worker 子进程的 nice 值以调整 Nginx 运行的优先值。进程启动时,nice 值默认为 0,换算到优先级为 120。nice 值对应 -20~19,可通过 nice 值调整的优先级范围是 100~139,值越低优先级别越高。

worker_shutdown_timeout time
worker_shutdown_timeout 5

设定 worker 子进程优雅退出时的超时时间,防止 worker 子进程被恶意干扰,再等待一段时间后若无回应则会断开连接。
除上述主要参数之外,main 段参数还包括 user 与 pid。

user USERNAME [GROUP]
user nginx nginx;

设定运行 Nginx 的 worker 子进程属主和属组,通过语法可知,属组可以不指定。

pid DIR
/usr/local/nginx/logs/nginx.pid;

设定运行 Nginx 的 master 主进程的 pid 文件存放路径。

配置完成后 main 段参数如下

user  nginx nginx;
worker_processes  auto;
timer_resolution 80ms;
worker_rlimit_nofile 50000;
worker_rlimit_core 80M;
working_directory /opt/nginx/core;
worker_cpu_affinity 0001 0010 0100 1000;
worker_priority -5;
worker_shutdown_timeout 3;
pid /opt/nginx/logs/nginx.pid;
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!