nginx性能优化之根据CPU配置多线程运行(worker配置说明)

查看nginx.conf

vi/usr/local/nginx1.10/conf/nginx.conf

events {

	use epoll;
	...
	worker_connections 65535;
    worker_processes 4;
	accept_mutex on;
    accept_mutex_delay 500ms;
    worker_rlimit_nofile 20960;
	multi_accept on;
}

相关配置指令介绍说明

  • worker_connections该指令设置worker进程最大打开的连接数,默认值为512。
  • worker_processes指令控制工作进程数,其默认值为1,这样设置的话,nginx只运行一个worker。(建议:应根据可用内核数,磁盘,网络子系统,服务器负载等更改为最佳值。)
  • accept_mutexaccept_mutex参数将使每个可用的worker进程逐个接受新连接,默认值为on。(如nginx中配置了多个workers,那么还应配置影响worker的相关指令)
    如果accept_mutex为off,所有可用的worker将从等待状态唤醒,但只有一个worker处理连接。 这导致惊群现象,每秒重复多次。 这种现象导致服务器性能下降,因为所有被唤醒的worker都在占用CPU时间。 这导致增加了非生产性CPU周期和未使用的上下文切换。
  • accept_mutex_delay当accept_mutex的值为on,也就是启用accept_mutex时(只有一个具有互斥锁的worker程序接受连接,而其他工作程序则轮流等待),accept_mutex_delay对应于worker等待的时间帧,然后它尝试获取互斥锁并开始接受新的连接,默认值为500毫秒。
  • worker_rlimit_nofile同时连接的数量受限于系统上可用的文件描述符的数量,因为每个套接字将打开一个文件描述符。 如果nginx尝试打开比可用文件描述符更多的套接字,会发现error.log中出现Too many opened files的信息。nginx提供了worker_rlimit_nofile指令,这是除了ulimit的一种设置可用的描述符的方式。
    将此值增加到大于worker_processes * worker_connections的值,应该是增加当前worker运行用户的最大文件打开数值。
    (指令与使用ulimit对用户的设置是同样的效果,使用ulimit检查文件描述符的数量自行百度)
  • multi_accept指令使得NGINX worker能够在获得新连接的通知时尽可能多的接受连接。 此指令的作用是立即接受所有连接放到监听队列中。 如果指令被禁用,worker进程将逐个接受连接。

查看cpu数

lscpu

在这里插入图片描述

cat /proc/cpuinfo | grep 'processor' | wc -l
在这里插入图片描述

根据cpu数修改worker_processes

worker_processes指令控制工作进程数;
worker_processes 1
或者可以将其设置为auto。 这样nginx会自动根据核心数为生成对应数量的worker进程。
worker_processes auto

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷偷学习被我发现

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值