7.3 性能优化:系统性能优化的分层思想
性能测试====>性能指标:是否达标====>性能优化
本节课思路:spark 为案例,优化思路。
按照事务本身的规律做事情,避免被别人带跑偏。
1.软件性能优化的两个基本原则
不能优化一个没有测试的软件
不能优化一个不了解的软件
2.性能测试的主要指标
响应时间:完成一次任务花费的时间
并发数:同时处理的任务数
吞吐量:单位时间内完成的任务数
性能计数器:System load,线程数,进程数,CPU,内存,磁盘,网络使用率
3.Spark 应用性能测试
4.性能优化的一般方法:优化闭环
性能测试,获得性能指标:量化指标
指标分析,发现性能与资源瓶颈点:找到瓶颈
架构与代码分析,寻找性能与资源瓶颈关键所在:分析关键
架构与代码及其他优化,优化关键技术点,平衡资源利用:落实优化
性能测试,进入性能优化闭环:结果量化
5.性能优化的分层思想
机房与骨干网络性能优化
服务器与硬件性能优化
操作系统性能优化
虚拟机性能优化
基础组件性能优化
软件架构性能优化
软件代码性能优化
机房==>服务器硬件==>操作系统==>虚拟机==>基础组件==>架构==>代码
6.机房与骨干网络性能优化
异地多活的多机房架构----高可用----高性能
专线网络与自主 CDN 建设
7.服务器与硬件性能优化
使用更优的 CPU,磁盘,内存,网卡,对软件的性能优化可能是数量级的,有时候远超过代码和架构的性能优化。
比如:机械硬盘===>固态硬盘
硬件性能优化案例:Spark 作业过程需要传输大量数据,进行资源瓶颈分析,发现大量网络消耗在网络传输上。
优化方案:升级网卡,10G 网卡代替 1G 网卡。
8.操作系统性能优化
案例:资源利用分析,发现大量 CPU 操作为 sys 类型,消耗大量计算资源。
调查发现:起因是部分 Linux 版本缺省情况打开 tranparent huge page 导致。
优化方案:关闭 transparent huge page.
9.虚拟机性能优化
不同垃圾回收算法
10.基础组件性能优化
Jetty7.1.5 替代 JBoss4.0.5,基础组件升级。
11.软件架构性能优化--三板斧
缓存:1.从内存中读取数据,减少响应时间;
2.减少数据库访问,降低存储设备负载压力;
3.缓存结果对象,而不是原始数据,减少 CPU 计算
4.缓存主要优化读操作
异步:1.即时响应,更好的用户体验;
3.异步主要优化写操作;
集群:古老谚语:如果一匹马拉不动车,无需换一匹更强的马,而是用两匹马拉车。
互联网技术的发展路径:更多的用户访问需要消耗更多的计算资源,单一服务器计算资源的增加是有极限的,
所以需要增加更多的服务器。关键是如何利用起来这些服务器。
集群的技术目标只有一个:如何使很多服务器对使用者而言看起来像一台服务器。
12.软件代码性能优化
遵循面向对象的设计原则与设计模式编程,很多时候程序性能不好不是因为性能上有什么挑战,仅仅就是因为代码太烂。
并发编程:多线程与锁。
资源复用:线程池与对象池。
异步编程:生产者消费者。
数据结构,数组,链表,hash 表,树。
案例:Spark 任务文件初始化调优
评论