# 指定nginx开启worker工作子进程数量# number默认1,建议配置数量与CPU核心数量相等worker_processes number复制代码
# nginx默认未开启利用多核CPU,开启某个核心该位置标志为1即可# worker_processes 最多开启8个,所以多核最多8个也就够用。示例配置开启4核worker_cpu_affinity 00000001 00000010 00000100 00001000复制代码
# 进程优先级,数值越低占用资源越多# number默认10,值范围-20 ~ 20# 建议配置-10即可,最好别低于Linux系统进程-5优先级worker_priority number复制代码
# 一个子进程可以打开文件描述限制# nginx默认一个子进程打开文件描述限制数量 = (ulimt -u) / worker_processes# 因为进程处理连接任务很多时候不均衡,所以最好设置为与系统数量一致worker_rlimit_nofile (ulimit -u)复制代码
# file指定日志输出文件位置,默认logs/error.log# level指定日志输出最低级别,默认error级别。当然可以设置为debug、info等error_log file [level]复制代码
# file默认值logs/pid.log,指定nginx中master进程的PID输出文件位置pid file复制代码
# user第二个参数user,配置nginx进程运行用户,默认nobody# group配置nginx进程运行用户组,默认nobodyuser user [group]复制代码
# nginx指定一个子进程可处理连接数量# number默认数量1024# nginx可处理连接总数 = worker_processes * worker_connecitonsworker_connections number复制代码
accept_mutex參數為工作進程處理連接accept互斥鎖開關,1.11.3之前預設on,之後的版本則是預設off
Nginx可以透過worker_processes參數配置多個工作進程,多個工作進程fork後會監聽同一個連接埠。如果有一個外部連線進來就會喚醒所有子程序搶奪該連線,除一個子程序成功處理accept事件意外子程序都會重新休眠。導致很多不必要的上下文切換。這就是驚群現象
nginx透過增加accept互斥鎖讓註冊到epoll中的進程只有一個,從而避免驚群現象。也就是連接進來時只能有一個子進程去處理
尝试获取accept锁if success 在epoll中注册accept事件else 在epoll中注销accept事件 处理所有连接事件 释放accept锁复制代码
accept鎖定看似完美解決了驚群現象帶來的問題,但是也帶來了某些子進程很忙,某些子進程很閒的問題,特別是在吞吐並發比較高的應用中。通俗來講就是worker子進程負載不均問題
當accept_mutex設定為on後就需要根據應用場景調試accept_mutex_delay參數,該參數規定所有子進程多少時間後重新搶奪accept鎖定。合適的參數值有助於減少worker負載不平衡問題。預設值500ms
相關推薦:nginx教學
以上是nginx中必須設定的參數介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!