通常多数人不会注意Nginx的accept_mutex配置,不过实际上它对系统的吞吐量有一定的影响。

  1. events {

  2. accept_mutex off;

  3. }

让我们看看accept_mutex的意义:当一个新连接到达时,如果激活了accept_mutex,那么多个Worker将以串行方式来处理,其中有一个Worker会被唤醒,其他的Worker继续保持休眠状态;如果没有激活accept_mutex,那么所有的Worker都会被唤醒,不过只有一个Worker能获取新连接,其它的Worker会重新进入休眠状态,这就是惊群问题。

Nginx缺省激活了accept_mutex,也就是说不会有惊群问题,但真的有那么严重么?实际上Nginx作者Igor Sysoev曾经给过相关的解释:

OS may wake all processes waiting on accept() and select(), this is called thundering herd problem. This is a problem if you have a lot of workers as in Apache (hundreds and more), but this insensible if you have just several workers as nginx usually has. Therefore turning accept_mutex off is as scheduling incoming connection by OS via select/kqueue/epoll/etc (but not accept()).

简单点说:Apache动辄就会启动成百上千的进程,如果发生惊群问题的话,影响相对较大;但是对Nginx而言,一般来说,worker_processes会设置成CPU个数,所以最多也就几十个,即便发生惊群问题的话,影响相对也较小。

另:高版本的Linux中,accept不存在惊群问题,不过epoll_wait等操作还有。

假设你养了一百只小鸡,现在你有一粒粮食,那么有两种喂食方法:

  • 你把这粒粮食直接扔到小鸡中间,一百只小鸡一起上来抢,最终只有一只小鸡能得手,其它九十九只小鸡只能铩羽而归。这就相当于关闭了accept_mutex。

  • 你主动抓一只小鸡过来,把这粒粮食塞到它嘴里,其它九十九只小鸡对此浑然不知,该睡觉睡觉。这就相当于激活了accept_mutex。

可以看到此场景下,激活accept_mutex相对更好一些,让我们修改一下问题的场景,我不再只有一粒粮食,而是一盆粮食,怎么办?

此时如果仍然采用主动抓小鸡过来塞粮食的做法就太低效了,一盆粮食不知何年何月才能喂完,大家可以设想一下几十只小鸡排队等着喂食时那种翘首以盼的情景。此时更好的方法是把这盆粮食直接撒到小鸡中间,让它们自己去抢,虽然这可能会造成一定程度的混乱,但是整体的效率无疑大大增强了。

Nginx缺省激活了accept_mutex,是一种保守的选择。如果关闭了它,可能会引起一定程度的惊群问题,表现为上下文切换增多(sar -w)或者负载上升,但是如果你的网站访问量比较大,为了系统的吞吐量,我还是建议大家关闭它。

转载于:https://blog.51cto.com/13293070/2171027

Nginx的accept_mutex配置相关推荐

  1. Nginx的accept_mutex配置分析

    通常多数人不会注意Nginx的accept_mutex配置,不过实际上它对系统的吞吐量有一定的影响. 让我们看看accept_mutex的意义:当一个新连接到达时,如果激活了accept_mutex, ...

  2. nginx反向代理配置

    Nginx集群配置 安装Nginx官网 nginx模块简介 1.全局块:配置影响nginx全局的指令.一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许 ...

  3. nginx搭建及配置

    #!/bin/bash#for one install nginx#for wangjiadongge#Add users running the nginx service process # 创建 ...

  4. Nginx基础应用配置小结 - 运维笔记

    Nginx基础应用配置小结 - 运维笔记 在linux系统下使用nginx作为web应用服务,用来提升网站访问速度的经验已五年多了,今天在此对nginx的使用做一简单总结. 一.nginx服务简介 N ...

  5. Nginx的优化配置

      Nginx相关的内容有点延迟,趁着今天有空就给大家整理完,本篇文章来给大家把Nginx我们在工作中常用的配置来给大家分享下,希望能对大家有所帮助. Nginx的优化配置 全局配置 选项 设置 us ...

  6. 安装nginx并进行配置(记录来源于马哥linux运维教程 三)

    nginx最常见配置 1.woker_connections: 最大并发数目:woker_proces*woker_conections 2.user[epoil]/[rgsig]/[select]/ ...

  7. Nginx介绍及配置 (一)

    一 .Nginx 介绍 Nginx是一款由俄罗斯的程序设计师Igor Sysoev所开发的,自由开源高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:Ngin ...

  8. Nginx简介及配置

    1.nginx介绍 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务. Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的R ...

  9. http响应Last-Modified和ETag以及Apache和Nginx中的配置

    基础知识 1) 什么是"Last-Modified"? 在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属 ...

最新文章

  1. 深度介绍分布式系统原理与设计
  2. 青龙羊毛——小虎饿了(偷的)
  3. markdown 编辑器_Markdown 编辑器使用指南
  4. Spring MVC 学习笔记 json格式的输入和输出
  5. UVA - 10817 Headmaster's Headache
  6. hdu 3371 Connect the Cities(prim算法)
  7. Safari导入Chrome书签
  8. 关于ABAP事件的一张图
  9. 搭建Web和FTP站点
  10. Charles 使用教程
  11. Spring加载applicationContext.xml应用上下文的方式
  12. 凝思系统激活序列号_凝思6.0虚拟机搭建--遇到的问题
  13. 我不恨你,我只恨我们有缘无分
  14. excel跨序号排版
  15. 语音数据集 | Speech datasets
  16. b站网页版倍速无效_看网课讲师太啰嗦太慢?在线视频课程效率低?教你自定义超倍速看
  17. Datadome 最新逆向分析(支持爱马仕)
  18. 学校计算机考试插u盘,一种带USB插头的计算机考试防U盘作弊装置的制作方法
  19. 网站安全狗安装时服务器名,解决网站安全狗安装后访问网站需要用户名密码的方法...
  20. 群晖nas上部署gitea后修改IP地址

热门文章

  1. ng-options
  2. android apk 防止反编译技术加壳技术(转)
  3. GetConsoleWindow was not declared in this scope
  4. 【交往智慧】002.和优秀的人接触
  5. CSS3j背景渐变,字体颜色渐变,以及兼容IE写法
  6. ORACLE中seq$表更新频繁的分析
  7. 1424 零树 (树形DP)
  8. select和其元素options
  9. js判断浏览器类型、是否为移动客户端访问
  10. 配置linux普通用户无密码执行sudo命令