小滴课堂后端面试题(4)~持续更新中

一、工作中,从安全的角度上出发,时常不给使用超级管理员root用户,但是普通用户的权限又不能满足实际工作中使用,所以就有一种需求,使得一个用户的权限比普通用户高,而又不能比root用户权限高,可以创建一个普通用户赋予root组的权限,请写出创建的命令:创建一个user1用户,使他拥有root组的权限

答案:

useradd user1 && usermod -G root user1
复制代码

二、如何合理的设置线程池中线程数的大小

线程池究竟设成多大是要看你给线程池处理什么样的任务,任务类型不同,线程池大小的设置方式也是不同的。任务一般可分为:CPU密集型、IO密集型,对于不同类型的任务需要分配不同大小的线程池。

答案:

CPU密集型任务

  • 尽量使用较小的线程池,一般为CPU核心数+1。
  • 因为CPU密集型任务使得CPU使用率很高,若开过多的线程数,只能增加上下文切换的次数,因此会带来额外的开销。

IO密集型任务

  • 可以使用稍大的线程池,一般为2*CPU核心数。
  • IO密集型任务CPU使用率并不高,因此可以让CPU在等待IO的时候去处理别的任务,充分利用CPU时间。

一般经过监控程序,逐步调整线程池线程数,使其达到合理的数量

三、背景:公司由于考虑到安全问题想对nginx进行升级,但是之前安装nginx 的文档找不到了,不知道编译过什么模块,想让你查一查编译过什么模块,请写出查询过程

答案:

/usr/local/nginx/sbin/nginx -V
复制代码

备注:/usr/local/nginx 是nginx 的安装路径

四、什么是OpenResty, 为什么要用OpenResty?

答案:

  • Nginx是C语言开发,如果要二次扩展是很麻烦的,而基于OpenResty,开发人员可以使用 Lua 编程语言对 Nginx 核心模块进行二次开发拓展

  • OpenResty将Nginx核心、LuaJIT、许多有用的Lua库和Nginx第三方模块打包在一起,性能强大,OpenResty可以快速构造出1万以上并发连接响应的超高性能Web应用系统

  • 基于Ngnix和Lua的高性能web平台,内部集成精良的LUa库、第三方模块、依赖, 开发者可以方便搭建能够处理高并发、扩展性极高的动态web应用、web服务、动态网关。

五、什么是缓存雪崩、缓存穿透,怎么解决?

答案:

  • 缓存雪崩我们可以简单的理解为:由于原有缓存失效,新缓存未到期间所有原本应该访问缓存的请求都 去查询数据库了,⽽对数据库 CPU 和内存造成巨⼤压⼒,严重的会造成数据库宕机。从⽽形成⼀系列 连锁反应,造成整个系统崩溃。⼀般有三种处理办法:
  1. ⼀般并发量不是特别多的时候,使⽤最多的解决⽅案是加锁排队。
  2. 给每⼀个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效,则更新数据缓存。
  3. 为 key 设置不同的缓存失效时间。
  • 缓存穿透是什么?

缓存穿透是指⽤户查询数据,在数据库没有,⾃然在缓存中也不会有。这样就导致⽤户查询的时候,在 缓存中找不到,每次都要去数据库再查询⼀遍,然后返回空(相当于进⾏了两次⽆⽤的查询)。这样请 求就绕过缓存直接查数据库,这也是经常提的缓存命中率问题。

  • 怎么解决缓存穿透?

有很多种⽅法可以有效地解决缓存穿透问题,最常⻅的则是采⽤布隆过滤器,将所有可能存在的数据哈 希到⼀个⾜够⼤的 bitmap 中,⼀个⼀定不存在的数据会被这个 bitmap 拦截掉,从⽽避免了对底层存 储系统的查询压⼒。另外也有⼀个更为简单粗暴的⽅法,如果⼀个查询返回的数据为空(不管是数据不 存在,还是系统故障),我们仍然把这个空结果进⾏缓存,但它的过期时间会很短,最⻓不超过五分钟。 通过这个直接设置的默认值存放到缓存,这样第⼆次到缓冲中获取就有值了,⽽不会继续访问数据库。

拓展

  • 缓存预热

缓存预热就是系统上线后,将相关的缓存数据直接加载到缓存系统。这样就可以避免在⽤户请求的时候, 先查询数据库,然后再将数据缓存的问题!⽤户直接查询事先被预热的缓存数据!

  • 缓存更新

缓存更新除了缓存服务器⾃带的缓存失效策略之外(Redis 默认的有 6 中策略可供选择),我们还可以根据具体的业务需求进⾏⾃定义的缓存淘汰,常⻅的策略有两种: (1)定时去清理过期的缓存;(2)当有⽤户请求过来时,再判断这个请求所⽤到的缓存是否过期,过期的话就去底层系统得到新数 据并更新缓存。

  • 缓存降级

当访问量剧增、服务出现问题(如响应时间慢或不响应)或⾮核⼼服务影响到核⼼流程的性能时,仍然 需要保证服务还是可⽤的,即使是有损服务。系统可以根据⼀些关键数据进⾏⾃动降级,也可以配置开 关实现⼈⼯降级。降级的最终⽬的是保证核⼼服务可⽤,即使是有损的。⽽且有些服务是⽆法降级的 (如加⼊购物⻋、结算)。


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值