nginx worker_processes、worker_connections设置多少合适?

一、worker_processes、worker_connections设置多少合适?

worker_processes与worker_connections 设置好合适大小可以提高nginx处理性能,所以非常重要。

原作者的话

As a general rule you need the only worker with large number of

worker_connections, say 10,000 or 20,000.

However, if nginx does CPU-intensive work as SSL or gzipping and

you have 2 or more CPU, then you may set worker_processes to be equal

to CPU number.

Besides, if you serve many static files and the total size of the files

is bigger than memory, then you may increase worker_processes to

utilize a full disk bandwidth.

Igor Sysoev

翻译

一般一个进程足够了,你可以把连接数设得很大。如果有SSL、gzip这些比较消耗CPU的工作,而且是多核CPU的话,可以设为和CPU的数量一样。或者要处理很多很多的小文件,而且文件总大小比内存大很多的时候,也可以把进程数增加,以充分利用IO带宽(主要似乎是IO操作有block)。

二、worker_processes,工作进程数

默认:worker_processes: 1

调大:worker_processes: CPU核心数,(双核4线程,可以设置为4)

三、worker_connections,单个工作进程(worker)可以允许同时建立外部连接的数量

数字越大,能同时处理的连接越多

默认:worker_connections: 1024

调大:worker_connections: 100000,(调大到10万连接)

三、如何配置数值大小

系统的最大打开文件数>= worker_connections*worker_process

根据系统的最大打开文件数来调整,worker_connections进程连接数量要小于等于系统的最大打开文件数,worker_connections进程连接数量真实数量= worker_connections*worker_process

查看系统的最大打开文件数

[root@yhg-server ~]# ulimit -a|grep “open files”

open files (-n) 65535

四、在主配置文件nginx.conf中配置

user root;

pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

工作进程数(我的服务器是2核,所以配置2)

worker_processes 2;

配置Nginx worker进程最大打开文件数

worker_rlimit_nofile 65535;

events {

单个进程允许的客户端最大连接数(65535/2)

worker_connections 32000;

}

五、max_clients

从用户的角度,http 1.1协议下,由于浏览器默认使用两个并发连接,因此计算方法:

nginx作为http服务器的时候:

max_clients = worker_processes * worker_connections/2

nginx作为反向代理服务器的时候:

max_clients = worker_processes * worker_connections/4

六、CPU相关信息查看

物理CPU个数

cat /proc/cpuinfo | grep “physical id” | sort | uniq | wc -l

逻辑CPU个数:(核数)

cat /proc/cpuinfo | grep “processor” | wc -l

每个物理CPU中Core的个数:

cat /proc/cpuinfo | grep “cpu cores” | wc -l

查看CPU型号

cat /proc/cpuinfo | grep ‘model name’ |uniq

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用[1]和引用[2]的内容,worker_connections的设置需要考虑两个重要指标:内存和操作系统级别的"进程最大可打开文件数"。每个连接数大约占用328字节的内存,因此可以通过计算来确定连接数所占用的内存大小。同时,进程最大可打开文件数受限于操作系统,可以通过ulimit -n命令查询。根据引用[3],nginx提供了worker_rlimit_nofile指令,可以设置可用的描述符数量,该指令的值将覆盖ulimit的值。 因此,要合理设置worker_connections,需要考虑服务器的内存和操作系统的进程最大可打开文件数。根据服务器的实际情况,可以根据以下几点进行调优: 1. 内存:根据服务器的可用内存大小,计算出每个连接所占用的内存大小,并根据服务器的内存情况,设置合适worker_connections数量,以避免内存不足的问题。 2. 进程最大可打开文件数:通过ulimit -n命令查询操作系统的进程最大可打开文件数,如果需要增加该值,可以使用worker_rlimit_nofile指令进行设置。 综合考虑服务器的内存和操作系统的进程最大可打开文件数,可以适当调大worker_connections的值,以提高nginx的并发连接能力。但是需要注意,过大的worker_connections值可能会导致内存占用过高,从而影响服务器的性能。因此,需要根据服务器的实际情况进行调优,找到一个合适worker_connections值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值