1、IO多路复用epoll
2、轻量级(代码模块化、功能模块少)
3、cpu亲和
是一种把CPU核心和nginx工作进程绑定方式,把,减少切换CPU的cache miss,获得更好的性能。
(nginx是由多个worker的进程工作,双cpu,每个cpu有4个核心,减少cpu切换时的性能损失)
4、sendfile(nginx处理静态文件是有优势的)
传统的是经过内核空间和用户空间,发生多次切换。如下图
Linux2.2后实现了零拷贝的传输模式,nginx实现了下图模式:
什么是IO复用?
就是让一个socket来作为复用完成整个IO流的请求,实现的方式有其中的一种就是多线程,如图:
串行方式
多线程方式
IO多路复用
IO多路复用的概念
多个描述符的I/O操作都能在一个线程内并发交替地顺序完成,这就是I/O 多路复用,
这里地“复用”指的是复用同一线程。
IO多路复用的实现方式select、poll、epoll
线性遍历的模式
Select缺点:
1) 能够监视文件描述符的数量存在最大限制
2) 线性扫描效率低下
Linux2.6后有了epoll模型
1) 每当FD就绪,采用系统的回调函数之间将fd放入,效率更高
2) 最大连接无限制
nginx官方模块
请求限制
开启这个以后重启
ab -n 20 -c 20http://192.168.150.132/4.html
当使用ab工具执行时,有
Non-2xx responses: 19
表示20 请求有19个是返回的非200的响应
查看日志tail -f /var/log/nginx/error.log
连接限制
nginx的访问控制
基于IP的访问控制 http_access_module
基于用户的信任登录http_auth_basic_module
http_acess_module访问控制
http_auth_basic_module
rpm -qf /usr/bin/htpasswd
yum -y install httpd-tools如果没有上述模块,则安装
htpasswd -c ./auth_conf root
more auth_conf