nginx面试

Nginx是如何实现高并发的?

Nginx 采用的是多进程(单线程) & 多路IO复用模型,,异步,非阻塞.

一个主进程master,多个工作进程worker,每个工作进程可以处理多个请求

master进程主要负责收集、分发请求。每当一个请求过来时,master就拉起一个worker进程负责处理这个请求。同时master进程也负责监控woker的状态,保证高可靠性

在nginx中的work进程中,为了应对高并发场景,采取了Reactor模型(也就是I/O多路复用,NIO):

每一个worker进程通过I/O多路复用处理多个连接请求;
为了减少进程切换(需要系统调用)的性能损耗,一般设置worker进程数量和CPU数量一致。
**I/O 多路复用模型:**在 I/O 多路复用模型中,最重要的系统调用函数就是 select(其他的还有epoll等),该方法的能够同时监控多个文件描述符的可读可写情况(每一个网络连接其实都对应一个文件描述符),当其中的某些文件描述符可读或者可写时,select 方法就会返回可读以及可写的文件描述符个数。

nginx work进程使用 I/O 多路复用模块同时监听多个 FD(文件描述符),当 accept、read、write 和 close 事件产生时,操作系统就会回调 FD 绑定的事件处理器,这时候work进程再去处理相应事件,而不是阻塞在某个请求连接上等待。这样就可以实现一个进程同时处理多个连接。

nginx和apache的区别?

轻量级,同样起web 服务,比apache 占用更少的内存及资源
抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
高度模块化的设计,编写模块相对简单
最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程

nginx 的 upstream支持的负载均衡方式?

轮询(默认)

weight :指定权重

ip_hash :每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器

第三方: fair、url_hash

Nginx常见的优化配置有哪些?

调整worker_processes : 指Nginx要生成的worker数量,最佳实践是每个CPU运行1个工作进程
最大化worker_connections :
启用Gzip压缩 : 压缩文件大小,减少了客户端http的传输带宽,因此提高了页面加载速度
为静态文件启用缓存
禁用access_logs : 访问日志记录,它记录每个nginx请求,因此消耗了大量CPU资源,从而降低了nginx性能

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值