demo
events { use epoll; worker_connections 65535; multi_accept on; } worker_connections 下面有介紹multi_accept 告诉nginx收到一个新连·接通知后接受尽可能多的连接,默认是on,设置为on后,多个worker按串行方式来处理连接,也就是一个连接只有一个worker被唤醒,其他的处于休眠状态,设置为off后,多个worker按并行方式来处理连接,也就是一个连接会唤醒所有的worker,直到连接分配完毕,没有取得连接的继续休眠。当你的服务器连接数不多时,开启这个参数会让负载有一定的降低,但是当服务器的吞吐量很大时,为了效率,可以关闭这个参数。worker_processes指令控制工作进程数:
worker_processes 1; 其默认值为1,这意味着NGINX只运行一个worker。 该值应根据可用内核数,磁盘,网络子系统,服务器负载等更改为最佳值。 一般设置为可用的(cpu)核心数。
或者,可以将其设置为auto。 这样nginx会自动根据核心数为生成对应数量的worker进程。
默认值为512.该指令设置单个worker进程最大打开的连接数
同时连接的数量受限于系统上可用的文件描述符的数量,因为每个套接字将打开一个文件描述符。 如果NGINX尝试打开比可用文件描述符更多的套接字,会发现error.log中出现Too many opened files的信息。
检查文件描述符(文件句柄数)
ulimit -a文件资源限制的配置可以在/etc/security/limits.conf设置,针对root/user等各个用户或者*代表所有用户来设置。
* soft nofile 65535 * hard nofile 65535用户重新登录生效(ulimit -n)
nginx的worker_rlimit_nofile
现在,将此值增加到大于worker_processes * worker_connections的值。 应该是增加当前worker运行用户的最大文件打开数值
NGINX提供了worker_rlimit_nofile指令,这是除了ulimit的一种设置可用的描述符的方式。 该指令与使用ulimit对用户的设置是同样的效果。此指令的值将覆盖ulimit的值,如:
worker_rlimit_nofile 65535;参考了大佬的博客 https://www.cnblogs.com/sherman125/p/8081095.html https://www.jianshu.com/p/3217f651d8a4
