Nginx学习知识点

负载均衡算法

1.round robin(默认)轮询算法

适用于后台机器性能一致的情况。 
挂掉的机器可以自动从服务列表中剔除。

2.weight

根据权重来分发请求到不同的机器中,指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。  

3. IP_hash

根据请求者ip的hash值将请求发送到后台服务器中,可以保证来自同一ip的请求被打到固定的机器上,

4.url_hash(第三方)

根据请求的url的hash值将请求分到不同的机器中,当后台服务器为缓存的时候效率高。

1.为什么nginx采用多进程结构而不使用多线程结构?

答:nginx要保证它的高可用性和高可靠性。当采用多线程时,线程之间是共享同一个地址空间的,当某一个第三方模块引发了由地址空间导致的“段”错误时,在地址越界出现时,会导致整个nginx进程全部挂掉!多进程则不会出现这种问题

2.master进程是用来管理worker进程的,所有的请求实际是由worker进程去完成的。master进程负责监控每个worker进程是不是在正常工作!进程间的通信都是使用共享内存解决的

3.每个worker进程占有绑定一个cpu,这样可以更好的利用CPU核上面的CPU缓存来减少缓存失效的命中率。

4.nginx -s reload流程

1向master进程发送HUP信号(reload命令)

2master进程校验配置语法是否正确

3master进程打开新的监听端口

4master进程用新的配置启动新的worker子进程

5master进程向老worker子进程发送QUIT信号

6老worker进程关闭监听,处理完当前连接后结束进程

5.热升级流程

1将旧nginx文件换成新nginx文件

2向master进程发送USR2信号

3master进程修pid文件名,加后缀.oldbin

4master进程用新nginx文件启动新master进程(新master进程是老master进程的子进程)

5向老master进程发送QUIT信号,关闭老master

6回滚:向老master发送HUP,向新master发送QUIT

6.优雅的关闭

1设置定时器worker_shutdown_timeout(定时器)

2关闭监听句柄

3关闭空闲连接(关闭已经不用的连接)

4在循环中等待全部关闭连接(看哪些连接执行完就关闭,当设置定时器时间到了后还有未执行完的连接,此时全部强制断开

5退出进程

7.并发请求量大的情况下nginx是如何处理的?

传统的请求

如果每一个请求是http请求,可以将其简化为3部分

1)收到http请求的header,收到后就知道需要交给上游的哪台服务器去处理,

2)再向上游服务器建立连接,

3)或者本地处理时看header中是否有content-length(是否有body),如果有body,接下来去读另一个读事件,处理完httpbody后发送一个http响应

比如Tomcat处理上图进程中,每个进程同一时间只处理一个请求,比如process1在处理网络事件条件不满足就会切换到process2,当process2由不满足时又切换到process3(处于满足状态),当process3用完时间片后会被操作系统再次进行切换,而每次切换大约会消耗5us时间,若并发连接和并发进程数增加时,这个增加幅度为指数级!所以会消耗CPU绝大部分计算能力,这种传统的web服务依赖于操作系统的进程调度方法,来实现并发连接数。操作系统调度仅适用于几百上千的进程间切换。上万级别就不能接受了!!

nginx处理方法

当蓝色的请求处理事件不满足的情况下,它在用户态直接切换到了绿色的请求,这样省去了进程间切换的时间成本(因为网络事件不满足),除非nginx使用的时间片已经用完,时间片的长度一般为5ms-800ms,在nginx的worke配置上把优先级调至最高(如:-19),这样操作系统给nginx分配的时间是比较大,nginx就能完成用户态请求的切换,使得CPU少做无用功

8.正向代理和反向代理

正向代理:我是一个用户,我访问不了某网站,但是我能访问一个代理服务器这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容代理服务器去取回来,然后返回给我,正向代理是服务于客户端

在这里插入图片描述

 反向代理:例用户访问 http://ooxx.me/readme,但ooxx.me上并不存在readme页面,他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户

在这里插入图片描述

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值