印象笔记Linux

300 阅读4分钟
  • 第17题:什么样的场景会出现服务器雪崩场景,具体怎么来解决。 雪崩效应产生的几种场景:流量激增,缓存刷新,程序BUG,硬件故障,线程同步等待。 流量激增:定义自身服务的容量,并限制。实现:Nginx限流模块,TMD。 缓存刷新:异步缓存更新。底层业务设置容量并自我保护。 硬件故障 线程同步等待:核心服务与非核心服务。非核心服务的线程调用的底层业务异常时,丢掉业务返回,并一定时间内不再调用。实现:Sentinel,Hystrix断路器。

流量激增:比如异常流量、用户重试导致系统负载升高; 缓存刷新:假设A为client端,B为Server端,假设A系统请求都流向B系统,请求超出了B系统的承载能力,就会造成B系统崩溃; 程序有Bug:代码循环调用的逻辑问题,资源未释放引起的内存泄漏等问题; 硬件故障:比如宕机,机房断电,光纤被挖断等。 线程同步等待:系统间经常采用同步服务调用模式,核心服务和非核心服务共用一个线程池和消息队列。如果一个核心业务线程调用非核心线程,这个非核心线程交由第三方系统完成,当第三方系统本身出现问题,导致核心线程阻塞,一直处于等待状态,而进程间的调用是有超时限制的,最终这条线程将断掉,也可能引发雪崩; 常见解决方案: 针对上述雪崩情景,有很多应对方案,但没有一个万能的模式能够应对所有场景。 针对流量激增,采用自动扩缩容以应对突发流量,或在负载均衡器上安装限流模块。 针对缓存刷新,参考Cache应用中的服务过载案例研究 针对硬件故障,多机房容灾,跨机房路由,异地多活等。 针对同步等待,使用Hystrix做故障隔离,熔断器机制等可以解决依赖服务不可用的问题。 通过实践发现,线程同步等待是最常见引发的雪崩效应的场景。

  • 硬连接和软连接区别。 软连接:ln -s,硬连接:ln 区别:硬连接等同于复制但与源文件同步更新,软连接等同于快捷方式。

第20题:Linux内核,select,poll,epoll。 IO多路复用技术:select和poll。 select工作模型:单个进程处理多个网络连接的IO请求,同时阻塞多个IO操作,内核不断轮训select负责的fd,查看IO操作是否完成。 poll:与select非常相似,不同之处,fd的集合方式不同,poll的fd集合方式是链式的,没有最大连接数限制。 select与poll的缺点:主动轮训机制的成本很高。连接数越多性能越差。 epoll: 没有fd数量的限制。epoll采取被动触发机制,给fd注册了相应事件,给fd指定了回调函数,fd就绪后进入就绪队列。

第21题:进程通信IPC,进程与线程的区别? 进程间通信:共享内存,消息队列,信号量,Socket。 进程与线程的区别: 1.不同的操作系统管理方式,进程有独立的地址空间,线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间。 2.进程切换时,比线程切换更耗资源,效率差些。 3.同时进行,且又共享某些变量的并发操作只能用线程。

怎么查看系统负载? top命令,vmstat命令。

Cpu load的参数如果为4,描述一下现在系统处于什么情况? 根据CPU核数,如果4核CPU则没有空闲CPU,如果8核CPU则有百分之50的空闲。

Linux,查找磁盘上最大的文件的命令。

Linux,如何查看系统日志文件。 /var/log目录下

第1题:虚拟内存分页了解不? 什么是虚拟内存?

  • 第2题:Linux的共享内存如何实现,大概说了一下。 1.m-map内存共享映射:用于父子进程间的内存共享。 2.System-V的共享内存: 3.POSIX共享内存: System-V共享内存和POSIX共享内存,底层都是基于内存文件系统tmpfs实现的。两者区别在接口设计。 POSIX内存共享提供了所有系统都一致的接口,System-V内存共享只实现自己的一套IPC逻辑。