9

nginx高并发优化之核心模块设置

 1 year ago
source link: https://blog.51cto.com/u_13236892/5818606
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

nginx高并发优化之核心模块设置

精选 原创
user nginx nginx;
worker_processes auto;
worker_cpu_affinity auto;
error_log /www/log/nginx_error.log crit;
pid /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 65535;
1、nginx服务的进程数
ginx通过工作进程处理具体的请求,设置几个工作进程就代表允许几个并发。最优的设置是worker进程数量要与CPU的核数相等
worker_processes 8;
#建议按照cpu数目来指定,一般跟cpu核数相同或为它的倍数。
#查看自身系统配置:cat /proc/cpuinfo| grep "processor"| wc -l
#或者top命令输出1查看
worker_processes 8;
worker_processes auto;

2、指定CPU内核来运行工作进程
默认情况下worker进程不绑定在任何一个CPU上。在 nginx 版本 1.9.10 之后,是可以自动将 worker 进程绑定到对应的 cpu 上面的。
#为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者将一个进程分配到多个cpu
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
默认情况下,Nginx的多个进程有可能跑在某一个CPU或CPU的某一核上,导致Nginx进程使用硬件的资源不均,因此绑定Nginx进程到不同的
CPU上是为了充分利用硬件的多CPU多核资源的目的。
worker_cpu_affinity用来为每个进程分配CPU的工作内核,参数有多个二进制值表示,每一组代表一个进程,每组中的每一位代表该进程使
用CPU的情况,1代表使用,0代表不使用。

#启动多少worker进程,官方建议和CPU核心数一致,第一种绑定组合方式
8核CPU2进程设置:worker_processes 2; worker_cpu_affinity 10101010 01010101;
第二种方式
8核CPU8进程设置:worker_processes 8; worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
最佳方式绑定方式
worker_processes auto;
worker_cpu_affinity auto;

3、work进程最大打开文件数
worker_rlimit_nofile 65535;
#当一个nginx进程打开的最多文件描述符数目,理论值应该是系统的最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请
求并不是那么均匀,所以最好与ulimit -n的值保持一致。
  • 收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK