深入理解Nginx 第8章:nginx基础架构

Nginx性能指标

  1. 吞吐量(带宽指的是单个连接的吞吐量)
  2. 单次请求的延迟性
  3. 网络效率:长连接减少建立、关闭连接的成本,压缩算法增加信息携带量

Nginx  模块设计

  1. NGX_CONF_MODULE:唯一只有一个模块(ngx_conf_module)的模块类型
  2. NGX_CORE_MODULE:核心模块,包括ngx_core_module,ngx_errorlog_module,ngx_events_module,ngx_openssl_module,ngx_mail_module,定义核心模块使得其他模块可以只关注于如何调用核心模块
  3. 配置模块与核心模块是其他模块的基础。事件模块是HTTP模块与mail模块的基础。HTTP模块和mail模块关注于应用层
  4. 在事件模块中,ngx_event_core_module是其他所有事件模块的基础;ngx_http_core_module是其他所有HTTP模块的基础;ngx_mail_core_module是其他所有mail模块的基础。

事件驱动架构

原理:一般由网卡、磁盘产生事件,事件模块负责事件收集、分发操作,所有模块都可能是消费者,它们向事件模块注册感兴趣的事件。在时间产生后,事件模块会把事件分发到相应模块处理。

传统web服务器(Apache):事件驱动仅在TCP连接建立、关闭,直到请求被处理结束时,中间都一直占据着系统资源

Nginx: 事件收集、分发器才会占用进程资源,由其统一调度、分发

完全不同的理念:Apache 每个事件消费者独占一个进程资源,NgInx消费者只是被事件分发者进程短期调用,不过Nginx要求消费者不能有阻塞行为,否则将导致进程阻塞。

解决办法:对阶段进行划分,将阻塞方法改为,非阻塞调用调用完后,将事件加入到事件收集器中,等待epoll收到后再进行调用

 

你可能感兴趣的:(Nginx)