2021-09-25

面试第二弹:nginx

#1、请列举Nginx的一些特性?
1,模块化设计,扩展性较高,开发人员可自行开发,但是他并不支持动态化卸载,也就意味着你必须首次编译进来,随nginx启动而启动,但是tengine支持DSO
2,高可靠性,nginx是由一个主进程和多个子进程组成的。master是主控进程,负责读取验证配置,套接字管理,生产多个worker进程,worker又分为多个种类,其主进程解析配置文件,启动关闭worker进程,而worker进程则负责:如缓存加载,响应用户请求,cache管理
3,低内存消耗。由于他是一个线程响应多个请求,所以对内存的消耗非常低,10000个keep-alive模式下链接,nginx只需要2.5MB内存
4,支持热部署。如果配置文件更新,不用重启nginx,新配置可以生效,甚至于版本更新,老版本不用停机,新版本则可以上线。在或者更换日志文件,日志文件滚动
#2、请列举Nginx和Apache 之间的不同点?
1、Nginx:高并发处理能力强,擅长处理静态请求、反向代理、负载均衡。
2、Apache:稳定,对动态请求处理能力强、高并发性能弱、耗费资源多。
#3、请解释Nginx如何处理HTTP请求?
1、请求头读取
2、解析请求行
3、解析请求头
4、开始最重要的部分:多阶段处理。nginx把请求处理划分为11个阶段,也就是说当nginx读取了请求行和请求头后,将请求封装了结构体ngx_http_request_t,然后每个阶段的handler都会根据这个ngx_http_request_t,对请求进行处理,例如重写URL,权限控制,路径查找,生成内容及记录日志等。
5、将结果返回给客户端
#4、进程和线程的区别?
1、进程是系统正在运行的一个程序,程序一旦运行就是进程,进程稳定性高,独占内存。
2、、线程来源于进程,一个进程可以有多个线程,线程共享进程的内存,线程模式需要事先开启。线程模式并发量高,相较于进程稳定性没进程高。稳定性低、共享内存、不支持PHP。
#5、反向代理与正向代理的区别?为什么使用反向代理?
正向代理代理的是客户端,反向代理代理的是服务器。可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。
#6、Nginx如何记录真实客户端的ip地址?
nginx配置文件添加 proxy_set_header X-Forwarded-For $remote_addr,重启相关服务。
#7、Nginx有哪些优点?
1、具有高并发性,能够支持5万并发连接。
2、内存消耗少,成本低
3、配置简便
4、稳定性高,功能多:web服务器,负载均衡服务器
#、LVS、Nginx、HAproxy 有什么区别?分别适合什么应用场景?
三者都能做负载均衡
lvs使用集群技术和Linux操作系统实现一个高性能、高可用的服务器。专门用来做负载均衡,工作在网络4层之上,抗负载能力强,工作稳定,目前用的多得是lvs+keepalived。
nginx能处理的并发量高,达上万个,工作在网络七层之上,对网络要求不严格,正则规则比haproxy强大,第三方模块多。
haproxy支持session的保持,cookie引导,可以通过url来检测后端服务器的状态。
专门用来做负载均衡的,可负载http,mysql
对于大型的需要高并发的网站或者网络要求不太严格的时候,用nginx;对于大型web服务器的时候用haproxy;
对性能有严格要求的时候用lvs,就单纯负载均衡的角度来说,lvs也许会成为主流,更适合大型的互联网公司。
#9、Nginx 是如何实现高并发的?
异步,非阻塞,使用epoll和大量的底层代码优化,nginx使用一个master多个work进程模式。
#10、为什么 Nginx 不使用多线程?
采用单线程来异步非阻塞处理请求(管理员可以配置Nginx主进程的工作进程的数量)(epoll),不会为每个请求分配cpu和内存资源,节省了大量资源,同时也减少了大量的CPU的上下文切换。所以才使得Nginx支持更高的并发。
#11、为什么要做动、静分离?
Nginx是当下最热的Web容器,网站优化的重要点在于静态化网站,网站静态化的关键点则是是动静分离,动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们则根据静态资源的特点将其做缓存操作。让静态的资源只走静态资源服务器,动态的走动态的服务器。Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。
#12、Nginx 如何开启压缩?开启压缩之后有什么作用?
Nginx实现资源压缩的原理是通过ngx_http_gzip_module模块拦截请求,并对需要做gzip的类型做gzip,ngx_http_gzip_module是Nginx默认集成的,不需要重新编译,直接开启即可。它的主要作用就是用来减轻服务器的带宽问题
#13、 什么叫 CDN 服务,CDN服务有什么作用?目前哪些厂商提供CDN服务?
CDN,即内容分发网络,主要功能就是让在各个不同地点的网络用户,都能够快速访问到网站提供的内容,不会经常出现等待或是卡顿的状况。阿里云、腾讯云、美团云、金山云。
# 14、nginx优化
1、调整worker_processes:调整nginx要生成的worker数量
2、启用Gzip压缩:压缩文件大小,减少了客户端http的传输带宽,提高页面的加载速度
3、为静态文件启用缓存:为静态文件启用缓存以减少带宽并提高性能
4、禁用访问日志:如果必须有访问日志,可以开启访问日志缓冲 access_log /var/log/nginx/access.log主缓冲区= 16k

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用python中的pymsql完成如下:表结构与数据创建 1. 建立 `users` 表和 `orders` 表。 `users` 表有用户ID、用户名、年龄字段,(id,name,age) `orders` 表有订单ID、订单日期、订单金额,用户id字段。(id,order_date,amount,user_id) 2 两表的id作为主键,`orders` 表用户id为users的外键 3 插入数据 `users` (1, '张三', 18), (2, '李四', 20), (3, '王五', 22), (4, '赵六', 25), (5, '钱七', 28); `orders` (1, '2021-09-01', 500, 1), (2, '2021-09-02', 1000, 2), (3, '2021-09-03', 600, 3), (4, '2021-09-04', 800, 4), (5, '2021-09-05', 1500, 5), (6, '2021-09-06', 1200, 3), (7, '2021-09-07', 2000, 1), (8, '2021-09-08', 300, 2), (9, '2021-09-09', 700, 5), (10, '2021-09-10', 900, 4); 查询语句 1. 查询订单总金额 2. 查询所有用户的平均年龄,并将结果四舍五入保留两位小数。 3. 查询订单总数最多的用户的姓名和订单总数。 4. 查询所有不重复的年龄。 5. 查询订单日期在2021年9月1日至9月4日之间的订单总金额。 6. 查询年龄不大于25岁的用户的订单数量,并按照降序排序。 7. 查询订单总金额排名前3的用户的姓名和订单总金额。 8. 查询订单总金额最大的用户的姓名和订单总金额。 9. 查询订单总金额最小的用户的姓名和订单总金额。 10. 查询所有名字中含有“李”的用户,按照名字升序排序。 11. 查询所有年龄大于20岁的用户,按照年龄降序排序,并只显示前5条记录。 12. 查询每个用户的订单数量和订单总金额,并按照总金额降序排序。
06-03

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值