写点什么

7.3 性能优化:系统性能优化的分层思想

用户头像
张荣召
关注
发布于: 2020 年 11 月 09 日

性能测试====>性能指标:是否达标====>性能优化

本节课思路: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 任务文件初始化调优


用户头像

张荣召

关注

还未添加个人签名 2018.05.02 加入

还未添加个人简介

评论

发布
暂无评论
7.3性能优化:系统性能优化的分层思想