# 指定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 매개변수는 작업자 프로세스 처리 연결에 대한 허용 뮤텍스 잠금 스위치입니다. 1.11.3 이전 버전에서는 기본값이 켜져 있고 이후 버전에서는 기본값이 꺼져 있습니다
Nginx는 작업자 프로세스 매개변수를 전달할 수 있습니다. 여러 작업자 프로세스는 포크 후 동일한 포트를 수신합니다. 외부 연결이 들어오면 모든 하위 프로세스가 연결을 확보하기 위해 깨어납니다. 한 하위 프로세스가 수락 이벤트를 성공적으로 처리하지 않으면 하위 프로세스는 다시 절전 모드로 전환됩니다. 불필요한 컨텍스트 전환이 많이 발생합니다. 이것이 썬더링 허드 현상입니다
nginx는 epoll에 하나의 프로세스만 등록되도록 accept mutex를 추가하여 썬더링 허드 현상을 방지합니다. 즉, 연결이 들어오면 이를 처리할 하위 프로세스는 하나만 있을 수 있습니다
尝试获取accept锁if success 在epoll中注册accept事件else 在epoll中注销accept事件 处理所有连接事件 释放accept锁复制代码
Accept Lock은 Thundering Group 현상으로 인한 문제를 완벽하게 해결한 것 같지만, 또한 일부 하위 프로세스를 매우 바쁘게 만듭니다. 특히 처리량과 동시성이 상대적으로 높은 애플리케이션에서 일부 하위 프로세스가 매우 유휴 상태라는 문제가 있습니다. 일반적으로 작업자 하위 프로세스의 로드가 고르지 않은 문제입니다
위 내용은 nginx에서 구성해야 하는 매개변수 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!