Nginx为什么这么快

发布时间:2021-11-15 12:43:50 作者:iii
来源:亿速云 阅读:123

本篇内容主要讲解“Nginx为什么这么快”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Nginx为什么这么快”吧!

 Nginx 的进程模型

Nginx为什么这么快

Nginx 服务器,正常运行过程中:

  1. 多进程:一个 Master 进程、多个 Worker 进程

  2. Master 进程:管理 Worker 进程

  3. 对外接口:接收外部的操作(信号)

  4. 对内转发:根据外部的操作的不同,通过信号管理 Worker

  5. 监控:监控 worker 进程的运行状态,worker 进程异常终止后,自动重启 worker 进程

  6. Worker 进程:所有 Worker 进程都是平等的

  7. 实际处理:网络请求,由 Worker 进程处理;

  8. Worker 进程数量:在 nginx.conf 中配置,一般设置为核心数,充分利用 CPU 资源,同时,避免进程数量过多,避免进程竞争 CPU  资源,增加上下文切换的损耗。

思考:

请求是连接到 Nginx,Master 进程负责处理和转发?

如何选定哪个 Worker 进程处理请求?请求的处理结果,是否还要经过 Master 进程?

Nginx为什么这么快

HTTP 连接建立和请求处理过程:

  1. Nginx 启动时,Master 进程,加载配置文件

  2. Master 进程,初始化监听的 socket

  3. Master 进程,fork 出多个 Worker 进程

  4. Worker 进程,竞争新的连接,获胜方通过三次握手,建立 Socket 连接,并处理请求

Nginx 高性能、高并发:

  1. Nginx 采用:多进程 + 异步非阻塞方式(IO 多路复用 epoll)

  2. 请求的完整过程:

  3. 建立连接

  4. 读取请求:解析请求

  5. 处理请求

  6. 响应请求

  7. 请求的完整过程,对应到底层,就是:读写 socket 事件

Nginx 的事件处理模型

request:Nginx 中 http 请求。

基本的 HTTP Web Server 工作模式:

Nginx 也是这个套路,整体流程一致。

Nginx为什么这么快

模块化体系结构

Nginx为什么这么快

nginx的模块根据其功能基本上可以分为以下几种类型:

常见问题剖析

Nginx vs. Apache

网络 IO 模型:

场景:

处理多个请求时,可以采用:IO 多路复用 或者 阻塞 IO +多线程

思考:IO 多路复用 和 多线程 的适用场景?

Nginx 最大连接数

基础背景:

因此,Nginx 的最大连接数:

  1. Nginx 的最大连接数:Worker 进程数量 x 单个 Worker 进程的最大连接数

  2. 上面是 Nginx 作为通用服务器时,最大的连接数

  3. Nginx 作为反向代理服务器时,能够服务的最大连接数:(Worker 进程数量 x 单个 Worker 进程的最大连接数)/ 2。

  4. Nginx 反向代理时,会建立 Client 的连接和后端 Web Server 的连接,占用 2 个连接

思考:

IO 模型

场景:

处理多个请求时,可以采用:IO 多路复用 或者 阻塞 IO +多线程

思考:IO 多路复用 和 多线程 的适用场景?

select/poll 和 epoll 比较

详细内容,参考:

select/poll 系统调用:

// select 系统调用 int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout);  // poll 系统调用 int poll(struct pollfd fds[], nfds_t nfds, int timeout);

select:

特点:

poll:

epoll: event 事件驱动

select,poll,epoll:

  1. I/O多路复用的机制;

  2. I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。

  3. 监视多个文件描述符

  4. 但select,poll,epoll本质上都是同步I/O:

  5. 用户进程负责读写(从内核空间拷贝到用户空间),读写过程中,用户进程是阻塞的;

  6. 异步 IO,无需用户进程负责读写,异步IO,会负责从内核空间拷贝到用户空间;

Nginx 的并发处理能力

关于 Nginx 的并发处理能力:

并发连接数,一般优化后,峰值能保持在 1~3w 左右。(内存和 CPU 核心数不同,会有进一步优化空间)

到此,相信大家对“Nginx为什么这么快”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. Nginx的运行速度为什么这么快
  2. kafka为什么那个快?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

nginx

上一篇:微服务的优秀实践有哪些

下一篇:怎么理解Spring事务

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》