Linux性能剖析课程说明

课程目标:当有人问你服务器性能相关时,你能够有一个合理的思考路径,也就是能够去分析并找出项目中的一些故障、性能问题

这是一门应付 Linux 相关面试的专栏,内容很多,不过大家也可以选择只看其中一部分,我下面会跟大家说看哪些:一般来说,Linux 在面试中会问如下问题:

1、常见命令,一般是进程和网络相关,比如 ps,netstat,top 这些。

2、基于你的项目,问你Linux实操问题,比如问你怎么排查一些错误情况,比如 cpu 很高怎么办啊,等等,服务器很卡怎么排查等等。

然后我之前写过 Linux 八股文多,大概需要掌握的有这些(当然,这算是挺全面的了)

下面说一说比较具体的考点 + 本专栏推荐阅读的章节

基础

1、文件系统:主要就是要了解下 inode,block,superblock,block bitmap 这些关键词的含义。(大概有印象吧,忘了也没事,说个大概)

2、目录的大致含义:例如像 proc 这个目录就放一些进程相关的信息,默认软件安装在 usr 目录等等,这其实是一种规范,这个要大致了解下。

3、文件一些属性:例如有些文件可读,可写,可执行,对应 rwx 权限这些, 通过 d 可以知道这个一个目录等等。

4、软连接与硬链接

5、VIM 的几种模式区别了解一一下

进程与内存等(这块是重点)

1、几个进程命令:ps,top,pstree,netstat,这几个进程要自己用一用,工作后经常用到的,重点学习了解下。

2、Linux 进程的一些状态,记得好几种:R,D,S,Z,T 这五种,要了解下。

3、孤儿进程,僵尸进程 要知道(重要),然后还得知道如何解决这种情况,例如出现大量僵尸进程怎么办

4、中断相关:软中断啊,不可中断状态啊

5、内存中的 Cache 和 buffer 的区别

6、了解 Swap 区

7、SiGCHLD 信号,waitpid() 和 wait() 函数

几种重要的 IO 模型

这几个比较重要了,需要学习,不多说。
1、同步,异步。

2、阻塞与非阻塞

3、select,epoll

4、NOI与IO

一些命令

如果可以,find,grep 这几个搜索相关的命令学下,因为项目会打印日志,我们需要捞日志来分析,就会经常用到 find,grep 这些,到时候面试官问到你也可以说。

项目故障排查

这块其实就是和实际工作比较靠近,做项目有时候会用到啥的,上面的优先学的,有空了再学一学这些

1、通过工具来追踪进程的栈轨迹,就是分析异常的原因,例如用 top 和 jstakc 来定位

2、掌握一些分析进程 IO,CUP,内存的工具,例如 pidstat

3、用 jsp,jstack 来分析死锁原因,一般就是通过栈信息来查看。

注意:最好自己随便找个教程,跟着演示一下。

学习资料指导

有时间 + 零基础的,就看下《鸟哥Linux私房菜》这本书吧,讲的很细,可以看下,跟着做实验,容易做的实验可以跟着做,麻烦的就不需要了,看前面基础的部分就行,后面的可以不看了。

但是呢,这本书只是入门,其实很多没讲的,例如 select,epoll,僵尸进程啥的啊,这种一般,你们哪个不同就看找对应的文章就行,通过文字来逐个了解突破哦。

本专栏重点章节

这个专栏是故障排除 + 性能优化的,我们需要掌握部分理论 + 部分故障的分析思路,这里我划一下重点吧(一般基础篇的都是需要看看)

另外,教程中案例演示,你可以不用跟着实操,当然,你时间多的话,你要也可以,我当时学的时候,是看理论 + 分析思路,没有跟着实操

1、CPU 相关:全部看

1. 基础篇:到底应该怎么理解“平均负载”?

2. 基础篇:经常说的 CPU 上下文切换是什么意思?

3. 基础篇:经常说的 CPU 上下文切换是什么意思?

4. 基础篇:某个应用的CPU使用率居然达到100%,我该怎么办?

5. 案例篇:系统的 CPU 使用率很高,但为啥却找不到高 CPU 的应用?

6. 案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(上)

7. 案例篇:系统中出现大量不可中断进程和僵尸进程怎么办?(下)

8. 基础篇:怎么理解Linux软中断?

9. 案例篇:系统的软中断CPU使用率升高,我该怎么办?

10. 套路篇:如何迅速分析出系统CPU的瓶颈在哪里?

11. 套路篇:CPU 性能优化的几个思路

2、内存相关:也要看,有个大概

14. 基础篇:Linux内存是怎么工作的?

15. 基础篇:怎么理解内存中的Buffer和Cache? 被问过,了解他们区别

16. 案例篇:如何利用系统缓存优化程序的运行效率?

17. 案例篇:内存泄漏了,我该如何定位和处理?

18. 案例篇:为什么系统的Swap变高了(上)

19. 案例篇:为什么系统的Swap变高了?(下

20. 套路篇:如何“快准狠”找到系统内存的问题?

21. 答疑(三):文件系统与磁盘的区别是什么?

3、IO相关8:有个大概吧,掌握思路,面试官问的时候,你可以举例子

22. 基础篇:Linux 文件系统是怎么工作的?

23. 基础篇:Linux 磁盘IO是怎么工作的(上)

24. 基础篇:Linux 磁盘IO是怎么工作的(下)

25. 案例篇:如何找出狂打日志的“内鬼”?

26. 案例篇:为什么我的磁盘IO延迟很高?

27. 案例篇:一个SQL查询要15秒,这是怎么回事?

28. 案例篇:Redis响应严重延迟,如何解决?

29. 套路篇:如何迅速分析出系统IO的瓶颈在哪里?

30. 套路篇:磁盘 IO 性能优化的几个思路

31. 答疑(四):阻塞、非阻塞 IO 与同步、异步 IO 的区别和联系

4、网络相关(这个可以不看,有时间再看)

32. 关于 Linux 网络,你必须知道这些(上)

33. 关于 Linux 网络,你必须知道这些(下)

34. 基础篇:C10K 和 C1000K 回顾

35. 套路篇:怎么评估系统的网络性能?

36. 案例篇:DNS 解析时快时慢,我该怎么办?

37. 案例篇:怎么使用 tcpdump 和 Wireshark 分析网络流量?

38. 案例篇:怎么缓解 DDoS 攻击带来的性能下降问题?

39. 案例篇:网络请求延迟变大了,我该怎么办?

44. 答疑(五):网络收发过程中,缓冲区位置在哪里

5、综合实战:(这个可以不看,有时间再看)

45. 案例篇:为什么应用容器化后,启动慢了很多?

46. 案例篇:服务器总是时不时丢包,我该怎么办?(上)

47. 案例篇:服务器总是时不时丢包,我该怎么办?(下)

48. 案例篇:内核线程 CPU 利用率太高,我该怎么办?

49. 案例篇:动态追踪怎么用?(上)

50. 案例篇:动态追踪怎么用?(下)

51. 案例篇:服务吞吐量下降很厉害,怎么分析?

52. 套路篇:系统监控的综合思路

53. 套路篇:应用监控的一般思路

54. 套路篇:分析性能问题的一般步骤

55. 套路篇:优化性能问题的一般方法

56. 套路篇:Linux 性能工具速查

发表评论

后才能评论