文章目录
- Nginx配置文件-events配置部分(1.2)
-
- 为什么Nginx总体性能比Apache高
-
- 使用通俗的语言比喻`epoll和select`模型
- 在实际工作中如何选择合适的服务软件
Nginx配置文件-events配置部分(1.2)
说明:
下文讲到参数都是在nginx.conf
配置文件中的,实际使用中要看公司业务的需求进行添加参数配置即可!
- worker_connections
worker_connections 1024;
定义每个work_process同时开启的最大连接数,即允许最多只能有这么多连接。
说明
大小按照需求来设置,平常网站设置到1万就已经很好了!
- accept_mute
accept_mutex on;
当某一个时刻只有一个网络连接请求服务器时,服务器上有多个睡眠的进程会被同时叫醒,这样会损耗一定的服务器性能。
Nginx中的accept_mutex设置为on,将会对多个Nginx进程(worker processer)接收连接时进行序列化,防止多个进程争抢资源
。
默认就是on。
说明
这里提到的进程是下图显示的worker process
- multi_accept
multi_accept on;
nginx worker processer可以做到同时接收多个新到达的网络连接,前提是把该参数设置为on。
默认为off,即每个worker process一次只能接收一个新到达的网络连接。
说明
想要高并发就要把此参数设置成ON
!
- 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高
说明
- Nginx使用
epoll
和kqueue(freebsd)
异步网络I/O模型
- apache使用传统的
select模型
使用通俗的语言比喻epoll和select
模型
假设你在大学读书,住的宿舍楼有很多房间,你的朋友要来找你。select版宿管大妈
就会带着你的朋友到各房间挨个去找,直到找到你为止。
而epoll版宿管大妈
会先记下每位
入住同学的房间号
,你的朋友来找你时,只需告诉你的朋友你住在哪个房间即可
,不用亲自带着你的朋友满宿舍楼找人了。
如果同时来了100个人,都要找自己住这栋楼的同学, select版和epo版宿管大妈,谁的效率更高,就很明显了。
在实际工作中如何选择合适的服务软件
静态业务
:高并发场景尽量采用nginx或者lighttpd,二者首选nginx动态服务
:理论上采用nginx和apache均可,建议选择nginx,为了避免相同业务的服务软件多样化,增加额外维护成本,动态业务可以由nginx前端代理,再根据页面元素的类型目录,转发到后端相应的服务器处理进程。- 既有静态业务也有动态业务:采用nginx