# 指定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复制代码
Le paramètre accept_mutex est le commutateur de verrouillage mutex d'acceptation pour la connexion de traitement du processus de travail. La valeur par défaut est activée avant la version 1.11.3 et la valeur par défaut est désactivée dans les versions ultérieures
Nginx peut configurer plusieurs processus de travail via le paramètre worker_processes, et plusieurs processus de travail écouteront le même port après le fork. Si une connexion externe arrive, tous les processus enfants seront réveillés pour saisir la connexion. À moins qu'un processus enfant ne gère avec succès l'événement d'acceptation, les processus enfants se rendormiront. Il en résulte de nombreux changements de contexte inutiles. Il s'agit du phénomène du troupeau tonitruant
nginx ajoute un mutex d'acceptation afin qu'il n'y ait qu'un seul processus enregistré dans epoll, évitant ainsi le phénomène du troupeau tonitruant. C'est-à-dire que lorsqu'une connexion arrive, il ne peut y avoir qu'un seul processus enfant à gérer
尝试获取accept锁if success 在epoll中注册accept事件else 在epoll中注销accept事件 处理所有连接事件 释放accept锁复制代码
Accepter le verrouillage semble résoudre parfaitement les problèmes causés par le phénomène de groupe tonitruant, mais cela entraîne également le problème que certains processus enfants sont très occupés et certains processus enfants sont très inactifs, en particulier dans les applications avec un débit et une concurrence relativement élevés. D'une manière générale, il s'agit du problème de la charge inégale des sous-processus de travail
Lorsque accept_mutex est activé, vous devez déboguer le paramètre accept_mutex_delay en fonction du scénario d'application. Ce paramètre spécifie le temps après lequel tous les processus enfants reprendront le verrou d'acceptation. Des valeurs de paramètres appropriées peuvent aider à réduire les problèmes de déséquilibre de charge des travailleurs. Valeur par défaut 500 ms
Recommandations associées : Tutoriel Nginx
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!