首页 > 编程知识 正文

nginx终极优化,nginx百万并发架构

时间:2023-05-05 02:14:45 阅读:16174 作者:4412

Nginx是免费、开源、高性能的HTTP服务器和反向代理以及IMAP/POP3代理服务器。 Nginx以其高性能、稳定性、丰富的功能、简单的结构和低资源消耗而闻名。

Nginx的总体体系结构

Nginx有主进程和多个工作器进程。 主进程不处理网络请求,主要安排工作进程,但加载配置、启动工作进程和停止升级除外。 工作器进程处理网络请求和响应。

主进程主要用于管理工作器进程,具体包括四个主要功能:

接收来自外界的信号。 向每个工作器进程发送信号。 监视woker进程的执行状态。 woker进程终止后,新的woker进程会自动重新启动,例外情况下。 工作器进程主要用于处理基本网络事件。

多个worker进程对等且独立,并且同等竞争客户端的请求。 一个请求只能由一个工作器进程处理,而一个工作器进程不能处理其他进程的请求。 可以设置工作器进程的数量,但通常将其设置为与计算机上的cpu内核数量相匹配。 另外,为了更好地利用多核的特性,nginx提供了cpu绑定选项,可以将一个进程绑定到一个核心,以防止由于进程切换而导致缓存失效。 Ngnix是如何实现高性能的?事件驱动模型

基于异步和异步阻塞的事件驱动模型可以说是Nginx实现高并发、高性能的重要因素。 这与Netty类似,基础使用BSD kqueue、Linux epoll和Solaris event ports。

多进程机制

使用多进程有两个好处。

由于进程之间不共享资源,不需要进行锁定,因此减少了使用锁定对性能的影响,同时降低了编程的复杂性,降低了开发成本。 使用独立的进程可以防止进程相互影响。 如果一个进程异常终止,而另一个进程正常运行,则主进程会立即启动新的工作器进程,以确保服务不会中断,从而将风险降至最低。内存池

为了避免内存碎片,减少对操作系统的内存申请次数,并降低每个模块的开发复杂性,Nginx设计了一个简单的内存池。 它主要旨在将多次内存申请操作合并为一次,这大大减少了CPU资源的消耗,同时也减少了内存碎片。

模块化设计高度模块化的设计是Nginx的体系结构基础。 Openresty在Nginx上部署了第三方模块(如lua ),以方便扩展。

资料浅谈Nginx服务器内部核心体系结构设计Nginx体系结构模型分析Nginx体系结构篇推荐系统设计:针对高可用性系统的几种技术方案基于系统负载的动态限流组件动态限流器

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。