nginx报错:Too many open files ---NGINX性能优化

worker_processes与worker_connections 设置好合适大小,可以提示nginx处理性能,非常重要。
一般一个进程足够了,你可以把连接数设得很大。(worker_processes: 1,worker_connections: 10,000)
如果有SSL、gzip这些比较消耗CPU的工作,而且是多核CPU的话,可以设为和CPU的数量一样。(worker_processes: CPU核心数)
或者要处理很多很多的小文件,而且文件总大小比内存大很多的时候,也可以把进程数增加,以充分利用IO带宽(主要似乎是IO操作有block)

worker_processes,工作进程数
1.默认:worker_processes: 1
2.调大:worker_processes: CPU核心数,(双核4线程,可以设置为4)最好设为auto,自动识别
worker_connections,单个工作进程可以允许同时建立外部连接的数量,数字越大,能同时处理的连接越多

1.默认:worker_connections: 1024
2.调大:worker_connections: 10240,(调大到10万连接)
worker_connections解析
1.connections不是随便设置的,而是与两个指标有重要关联,一是内存,二是操作系统级别的“进程最大可打开文件数”。
2.内存:每个连接数分别对应一个read_event、一个write_event事件,一个连接数大概占用232字节,2个事件总占用96字节,那么一个连接总共占用328字节,通过数学公式可以算出100000个连接数大概会占用 31M = 100000 * 328 / 1024 / 1024,当然这只是nginx启动时,connections连接数所占用的nginx。
3.进程最大可打开文件数:进程最大可打开文件数受限于操作系统,可通过 ulimit -n 命令查询,以前是1024,现在是65535,
nginx提供了worker_rlimit_nofile指令,这是除了ulimit的一种设置可用的描述符的方式。 该指令与使用ulimit对用户的设置是同样的效果。此指令的值将覆盖ulimit的值,如:worker_rlimit_nofile 20960;
设置ulimits:ulimit -SHn 65535

worker_processes auto; 

#配置Nginx worker进程最大打开文件数
worker_rlimit_nofile 65535;    #添加的

events {
    #单个进程允许的客户端最大连接数
    worker_connections  20480;
}


通过 ps -elf | grep nginx 找到 nginx 的worker进程ID
通过 cat /proc/31613/limits 查看,其中2291是worker进程ID,请注意其中的Max open files


关于max_clients的设置https://blog.51cto.com/liuqunying/1420556

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

 

   nginx作为http服务器的时候:

    max_clients = worker_processes * worker_connections/2

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

    max_clients = worker_processes * worker_connections/4

 

或者从一般建立连接的角度:客户并发连接为1.

   nginx作为http服务器的时候:

    max_clients = worker_processes * worker_connections

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

    max_clients = worker_processes * worker_connections/2


————————————————
参考:

https://blog.csdn.net/zhuyu19911016520/article/details/90714429

https://blog.51cto.com/13673885/2299763

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值