Nginx的特性-实现优点

原因一:IO多路复用epoll

什么是IO复用?

图片.png

多个描述符的 I/O 操作都能在一个线程内并发交替地顺序完成,这就叫I/O多路复用,这里的"复用"指的是复用同一个线程。
具体详细请查看文章:
https://segmentfault.com/a/1190000003063859
https://segmentfault.com/a/1190000004909797

原因二:轻量级

功能模块少:
源代码里只有核心代码,其他代码以插件形式安装
代码模块化:
适合二次改进

原因三:CPU亲和(affinity)

nginx正是利用到了cpu的亲和来提高并发处理能力以及减少不必要的cpu损耗。

1.什么是CPU亲和
是一种把CPU核心和Nginx工作进程绑定方式,把每个worker进程固定在一个cpu上执行,减少cpu的cache miss,获得更好的性能。
2.为什么需要CPU亲和


图片.png

nginx作为接入层的中间件,nginx通过多个work进程进行处理。
假设我们主机是两个CPU,每个有四个核心,我们把CPU的八个进程分别绑定到不同的CPU上(也就是不同的work分配到不同的核心上)。如果有多个CPU利用自带的CPU切换,会造成性能损失。利用这种CPU的亲和绑定,就能减少切换的损耗。

原因四:sendfile
nginx采用sendfile机制处理静态文件,因此效率很高。

图片.png

上图是传统的http服务,当我们访问一个文件时,会先经过内核空间,再经过用户空间,传给socket,最后通过response返回给用户。该过程需要多次与用户空间进行切换,但是静态文件其实不需要与用户空间进行过多的逻辑处理。直接可以通过内核空间传输。

图片.png

sendfile机制只通过内核空间,将文件传给socket,最终响应给用户。
因此nginx在处理CDN和动静分离服务时有很大优势。

附:
什么是内核空间和用户空间:https://blog.adolphlwq.xyz/user-and-kernel-space/
什么是CPU亲和力:http://www.cnblogs.com/wenqiang/p/6049978.html
什么是Linux的cache miss:https://www.ibm.com/developerworks/community/blogs/5144904d-5d75-45ed-9d2b-cf1754ee936a/entry/perf_introduction?lang=en
什么是零拷贝:https://www.jianshu.com/p/fad3339e3448

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载别人的文章,nginx调优。链接如下:http://blog.csdn.net/xifeijian/artic...
    Alex_ct阅读 4,567评论 0 1
  • 《老男孩Linux运维》笔记 隐藏Nginx软件版本号 一般来说,软件的漏洞都和版本有关。因此要尽量隐藏对访问用户...
    Zhang21阅读 9,105评论 0 28
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,909评论 24 1,002
  • 孩子,与我而言,可以真切的体验为痛并快乐着。 两个孩子同时啼哭,着着实实让人头痛,头痛不单单是因为孩子在哭,更为揪...
    Amy2018阅读 1,144评论 0 0
  • 我们有时候之所以觉得自己陌生,是因为装的太久了,分不清装与不装的样子,陷入一种混沌的状态,久而久之,摘不下面具,像...
    风沙独舞阅读 3,907评论 2 6

友情链接更多精彩内容