nginx面试常见问题_面试官应该问哪些问题

nginx面试常见问题_面试官应该问哪些问题1.什么是Nginx?Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器目前使用的最多的web服务器或者代理服务器,像淘宝、新浪、网易、迅雷等都在使用2.为什么要用Nginx?优点:*跨平台、配置简单*非阻塞、高并发连接:处理2-3万并发连接数,官方…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1.什么是Nginx?
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器 目前使用的最多的web服务器或者代理服务器,像淘宝、新浪、网易、迅雷等都在使用

2.为什么要用Nginx?
优点:
*
跨平台、配置简单
*
非阻塞、高并发连接:处理2-3万并发连接数,官方监测能支持5万并发
*
内存消耗小:开启10个nginx才占150M内存 成本低廉:开源
*
内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上。
*
节省宽带:支持GZIP压缩,可以添加浏览器本地缓存
*
稳定性高:宕机的概率非常小
*
master/worker结构:一个master进程,生成一个或者多个worker进程
*
接收用户请求是异步的:浏览器将请求发送到nginx服务器,它先将用户请求全部接收下来,再一次性发送给后端web服务器,极大减轻了web服务器的压力
*
一边接收web服务器的返回数据,一边发送给浏览器客户端
*
网络依赖性比较低,只要ping通就可以负载均衡
*
可以有多台nginx服务器
*
事件驱动:通信机制采用epoll模型

3.为什么Nginx性能这么高?
得益于它的事件处理机制: 异步非阻塞事件处理机制:运用了epoll模型,提供了一个队列,排队解决

4.Nginx是如何实现高并发的
service nginx start之后,然后输入#ps -ef|grep nginx,会发现Nginx有一个master进程和若干个worker进程,这些worker进程是平等的,都是被master fork过来的。在master里面,先建立需要listen的socket(listenfd),然后再fork出多个worker进程。当用户进入nginx服务的时候,每个worker的listenfd变的可读,并且这些worker会抢一个叫accept_mutex的东西,accept_mutex是互斥的,一个worker得到了,其他的worker就歇菜了。而抢到这个accept_mutex的worker就开始“读取请求–解析请求–处理请求”,数据彻底返回客户端之后(目标网页出现在电脑屏幕上),这个事件就算彻底结束。
nginx用这个方法是底下的worker进程抢注用户的要求,同时搭配“异步非阻塞”的方式,实现高并发量。

5.为什么不使用多线程 ?
因为线程创建和上下文的切换非常消耗资源,线程占用内存大,上下文切换占用cpu也很高,采用epoll模型避免了这个缺点

6.Nginx是如何处理一个请求的呢?
首先,nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址,然后在nginx的master进程里面
先初始化好这个监控的socket(创建socket,设置addrreuse等选项,绑定到指定的ip地址端口,再listen)
然后再fork(一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程 )出多个子进程出来
然后子进程会竞争accept新的连接。此时,客户端就可以向nginx发起连接了。当客户端与nginx进行三次握手,与nginx建立好一个连接后
此时,某一个子进程会accept成功,得到这个建立好的连接的socket,然后创建nginx对连接的封装,即ngx_connection_t结构体
接着,设置读写事件处理函数并添加读写事件来与客户端进行数据的交换。最后,nginx或客户端来主动关掉连接,到此,一个连接就寿终正寝了

7.正向代理
一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器)
然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理
正向代理总结就一句话:代理端代理的是客户端

8.反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求,发给内部网络上的服务器
并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器
反向代理总结就一句话:代理端代理的是服务端

9.动态资源、静态资源分离
动态资源、静态资源分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后
我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路
动态资源、静态资源分离简单的概括是:动态文件与静态文件的分离

10.为什么要做动、静分离?
在我们的软件开发中,有些请求是需要后台处理的(如:.jsp,.do等等),有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件)
这些不需要经过后台处理的文件称为静态文件,否则动态文件。因此我们后台处理忽略静态文件。这会有人又说那我后台忽略静态文件不就完了吗
当然这是可以的,但是这样后台的请求次数就明显增多了。在我们对资源的响应速度有要求的时候,我们应该使用这种动静分离的策略去解决
动、静分离将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问
这里我们将静态资源放到nginx中,动态资源转发到tomcat服务器中

11.负载均衡
负载均衡即是代理服务器将接收的请求均衡的分发到各服务器中
负载均衡主要解决网络拥塞问题,提高服务器响应速度,服务就近提供,达到更好的访问质量,减少后台服务器大并发压力

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/175614.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TerminateProcess函数简单使用示例[通俗易懂]

    TerminateProcess顾名思义,就是终止进程的意思。是WindowsAPI的函数,示例代码如下://Demo.cpp:定义控制台应用程序的入口点。//终止进程Demo#include”stdafx.h”usingnamespacestd;//@param:dwpid:指定需要关闭的进程pidintCloseProcess(DWORDdwpi…

    2022年4月7日
    118
  • scl语言用plc脉冲做定时器_scl语言用plc脉冲做定时器_西门子PLC SCL语言开发学习笔记(二)…

    scl语言用plc脉冲做定时器_scl语言用plc脉冲做定时器_西门子PLC SCL语言开发学习笔记(二)…今天来讲下scl两个关键的点一、按键事件比如地址I0.0是某个按钮的状态,他只有True和False两个状态,所以我们要获得按下事件需要我们自己模拟。#KeyPress:=”Btn1″ANDNOT#LastKey;#LastKey:=”Btn1″;这样通过对#KeyPress判断是否为True即可获得一次点击事件,相当于|P|把上一次的存起来,然后判断按下,如果你想把按键放在松开时…

    2022年10月6日
    6
  • 如何高效学习PLC

    如何高效学习PLC【1】电工原理和电机原理一定要懂,简单的就记背也要背下来,比如马达容量1KW2A,正反转,星三角接线,电线容量。电阻,电感,电容的特性等;【2】液压和气动也要掌握,比如压力换算,压力和电流的比例换算,这在有压力控制上都要用到;【3】电线截面要会看,线拿到手就知道几平方的,还有什么电器上该用什么线,比如马达就用4线的,3根主线1根接地。从变频器上出来的要用屏蔽线;【4】机修也要会做,特别是螺丝…

    2022年10月19日
    1
  • shell sort排序是从小到大_shell sort

    shell sort排序是从小到大_shell sortsort参数:-n:按数字排序,而不是字符-M:用三字符月份名按月份排序-b:排序时忽略起始的空白-c:不排序,如果数据无序也不要报告-d:仅考虑空白和字母,不考虑特殊字符-f:默认情况下,会将大写字母排在前面,这个参数会忽略大小写-g:按通用数据来排序(跟-n不同,把值当浮点数来排序,支持科学计数法表示的值)-i:在排序时忽略不可打印字符-k:排序从POS1位置开始,如果指定了POS2的话,到POS2位置结束-m:将两个已排序数据文件合并-o:将排序结果写出到指定文件中-R:按

    2022年8月12日
    11
  • C语言中int、long int、long long的区别

    C语言中int、long int、long long的区别1、关于int和longint(1)在VC下没有区别。两种类型均用4个字节存放数据。(2)VC是后出的编译器,之前有很多早期的C编译器,在早期编译器下longint占4个字节,int占2个字节。(3)之所以有“整型”和“长整形”两种不同类型,是C语言在诞生时发明者规定好的,前者存储的整数的值域小于后者。 这个问题不用牵肠挂肚,在VC下用谁都可以。

    2022年5月9日
    97
  • beta分布的均值和方差_二维均匀分布的期望和方差

    beta分布的均值和方差_二维均匀分布的期望和方差均值为a+b2\frac{a+b}{2}2a+b​,总数n为(b−a)(b-a)(b−a)方差=(x−均值)2n\frac{(x-均值)^2}{n}n(x−均值)2​所以[a,b]均匀分布的方差为:∫ab(x−a+b2)2dx(b−a)\frac{\int_a^b(x-\frac{a+b}{2})^2dx}{(b-a)}(b−a)∫ab​(x−2a+b​…

    2022年9月18日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号