当前位置: 代码迷 >> 综合 >> Nginx1.14.2配置文件-events配置部分(1.2)
  详细解决方案

Nginx1.14.2配置文件-events配置部分(1.2)

热度:72   发布时间:2023-10-13 01:26:18.0

文章目录

  • Nginx配置文件-events配置部分(1.2)
    • 为什么Nginx总体性能比Apache高
      • 使用通俗的语言比喻`epoll和select`模型
    • 在实际工作中如何选择合适的服务软件

Nginx配置文件-events配置部分(1.2)

说明:
  下文讲到参数都是在nginx.conf配置文件中的,实际使用中要看公司业务的需求进行添加参数配置即可!

  1. worker_connections
worker_connections 1024;

定义每个work_process同时开启的最大连接数,即允许最多只能有这么多连接。

说明
大小按照需求来设置,平常网站设置到1万就已经很好了!

  1. accept_mute
accept_mutex on;

当某一个时刻只有一个网络连接请求服务器时,服务器上有多个睡眠的进程会被同时叫醒,这样会损耗一定的服务器性能。
Nginx中的accept_mutex设置为on,将会对多个Nginx进程(worker processer)接收连接时进行序列化,防止多个进程争抢资源
默认就是on。

说明
这里提到的进程是下图显示的worker process
Nginx1.14.2配置文件-events配置部分(1.2)

  1. multi_accept
multi_accept on;

nginx worker processer可以做到同时接收多个新到达的网络连接,前提是把该参数设置为on。
默认为off,即每个worker process一次只能接收一个新到达的网络连接。

说明
想要高并发就要把此参数设置成ON!

  1. use epoll
use epoll;

Nginx服务器提供了多个事件驱动器模型来处理网络消息。
其支持的类型有:select、poll、kqueue、epoll、rtsing、/dev/poll以及eventport。

  • select:只能在Windows下使用,这个事件模型不建议在高负载的系统使用
  • poll:Nginx默认首选,但不是在所有系统下都可用
  • kqueue:这种方式在FreeBSD 4.1+, OpenBSD2.9+, NetBSD 2.0, 和 MacOS X系统中是最高效的
  • epoll: 这种方式是在Linux 2.6+内核中最高效的方式
  • rtsig:实时信号,可用在Linux 2.2.19的内核中,但不适用在高流量的系统中
  • /dev/poll: Solaris 7 11/99+,HP/UX 11.22+, IRIX 6.5.15+, and Tru64 UNIX 5.1A+操作系统最高效的方式
  • eventport: Solaris 10最高效的方式

为什么Nginx总体性能比Apache高

说明

  1. Nginx使用epollkqueue(freebsd)异步网络I/O模型
  2. apache使用传统的select模型
    Nginx1.14.2配置文件-events配置部分(1.2)

使用通俗的语言比喻epoll和select模型

假设你在大学读书,住的宿舍楼有很多房间,你的朋友要来找你。select版宿管大妈就会带着你的朋友到各房间挨个去找,直到找到你为止。

epoll版宿管大妈先记下每位入住同学的房间号,你的朋友来找你时,只需告诉你的朋友你住在哪个房间即可,不用亲自带着你的朋友满宿舍楼找人了。
   
   如果同时来了100个人,都要找自己住这栋楼的同学, select版和epo版宿管大妈,谁的效率更高,就很明显了。
Nginx1.14.2配置文件-events配置部分(1.2)

在实际工作中如何选择合适的服务软件

  • 静态业务:高并发场景尽量采用nginx或者lighttpd,二者首选nginx
  • 动态服务:理论上采用nginx和apache均可,建议选择nginx,为了避免相同业务的服务软件多样化,增加额外维护成本,动态业务可以由nginx前端代理,再根据页面元素的类型目录,转发到后端相应的服务器处理进程。
  • 既有静态业务也有动态业务:采用nginx
  相关解决方案