一 如何学习linux性能优化
强调: 由于知识'记忆曲线'以及'某些知识点不常用',所以一定要注重'复习'思考: 如何进行'能力转义'以及'能力嫁接'? --> 真正站在巨人的'肩膀'上性能调优的'目的': 不影响'系统稳定性'的资源'最大'利用化补充: 性能分析不能'脱离环境'侃侃而谈,了解基本的'性能基线'切记: 千万不要把性能'工具'当成学习的'全部',应消除干扰,专注于'问题本身'性能优化不光是'解决问题'或者是'降低成本',还有一个方向是 '提升' 用户体验
① 性能优化的困惑
人性的'弱点': 面对困难的'勇气'和'决心'
② 性能指标是什么?
性能'指标'概念: 高并发 '=>' 吞吐 响应快 '=>' 延时
观察角度: '应用负载' 和 '系统资源' 的'视角'
③ 学好性能优化需要什么基础
重点: '操作系统'、'计算机原理',工作'N'年后才明白'基础'的'重要性'建议: 如果'不具备'下面的能力,建议暂时不要'深入'探究,否则就会'走马观花',徒增烦恼
④ 学习的重点是什么?
+++++++++++ "立个 flag" +++++++++++1、建立'整体'性能的'全局观'2、理解最'基本'的几个'系统知识原理'3、掌握Linux 性能'工具图谱'的熟练应用
布伦丹·格雷格 大师勾勒的Linux性能工作图谱
讲解'思路': 我们先从'每类资源'开始,案例中会逐步'穿插各类资源瓶颈'的'交叉'情况
⑤ 怎么学习更高效
技巧'一':虽然'系统的原理'很重要,但在刚开始一定'不要'试图抓住'所有的实现'细节说明: 很大'一部分人'不是科班出身,计算机的'基础的素养'可能部分缺失,所以一开始'不要深陷'细节
说明: 不同'教育'背景、不通'工作'环境的it人员学习的'深度'不一样
技巧'二': 边学边实践,通过'大量的案例'演习'掌握' Linux 性能的分析和优化 --> '实践出真知'
技巧'三': 勤'思考'、多'反思 [复习回顾]'、善'总结'、多问'为什么'诶主: 在'交流'中加深理解、并进行领域'扩展'学习
说明: 树立 'flag'
困惑:不理解把cpu跑满了'好还是不好'?备注: 感觉'cpu空闲'很多很'浪费资源',但是'平时优化'的时候,都是要'降低'cpu使用率
⑥ 补充
1、简化版的'性能优化'排查'思路'遗留:1) 程序是使用'单核'还是'多核' --> 'redis 单线程'2) 判断内存'不足' --> '业务实际需要'还是'内存溢出'3) cpu 核的使用'不均衡' --> 只有'某个 100%'4) 深入理解'/proc'目录下的'文件'遇到问题时会'Google 上网'搜索解决办法,但是'不知道原理',经常'胡乱'修改,'试错成本'太大
疑惑: '代码开发基础'在'性能优化工作'中到底能'占多少比重'?
思考: 关于'工具'的选择?
思考: 各种'软件'实际的性能优化'场景'? --> '各种组件'重点: mysql 性能'优化' --> '慢sql'、'索引'
思考: gitlab服务器在'push和pull'的时候存在'20%左右'的可能'连接不上'?
认识: '同一个指标'放到'不同场景'里的效果可能是'差别巨大'的
疑惑: '操作系统'和'内核原理'要学习到什么程度?
深度学习 'deeping learning'的开发中: 遇到的'困难和疑惑'
思考: 为什么应用程序只'祸祸'某一个CPU,使用率达到'100%'?备注: 'redis' 只使用'单核'、而 Memcached 可以使用多核
疑惑: '压测'时,CPU利用率很'低'?
思考: 作为'软件性能测试人员'如何学好'性能调优'?备注: 不能'放低'对自己的'要求'
疑惑: 性能分析的'目的'?
说明: '重启 restart' 大法 '治标不治本'
问题点: 调用函数'阻塞'导致性能问题
说明: 大厂'面试'也越来越关注'性能优化'?备注: 后续还是要'有针对性'修炼'内功'
思考: 测试人员的'困惑'?
思考: 对于'SRE'运维人员?
思考: 集群'负载'排查?说明: 服务一般都是'集群形式',多'实例'构成的
现象: 系统运行很'慢',我登录上去也'很慢'、操作也'慢',执行top要'很久'才有结果思考: 瞬间'oom'有何方式可以'捕获'思考: 遇到过内存泄露问题,程序运行过程中'内存一直增长',但是自己难以定位到到底是那里除了问题?