• 软件的优化(一)总体


    一、基本概念

    1、软件系统质量特性

    安全性:同时兼顾向合法用户提供服务,以及阻止非授权使用软件及资源的能力。

    健壮、可靠:软件系统在一定的时间内无故障运行的能力、容错能力、恢复能力

    可扩展、可维护、可移植:正在运行的软件系统以适应新需求、变化了的需求的难易程度

    可用性、易用性、性能:性能是指软件及时提供相应服务的能力。 具体而言, 性能包括速度、 吞吐量和持续高速性三方面的要求 。

    以上特性也是我们优化最终提高的目标。

    2. 性能的定义及表现

    定义:多快给用户想要的结果;主要考察流畅度和更少的资源占用两个方面

    表现:一些页面加载超过3秒,就会影响用户体验,从而流失用户,所以我们的业务计算结果越快出来越好

    3、查看范围

          CPU负载/利用率:如果CPU负荷过高说明目前CPU资源是不足的。那么在后续的[分析程序的数据结构与算法]阶段,你需要优化运算逻辑如设计更合理的并行线程数量(通常是cpu核数×2);或者你可以直接增加CPU资源(scaleup);

      内存占用:如果内存占用过高,可能会导致交换到swarp区,进而导致性能下降。那么在后续的[分析程序的数据结构与算法]阶段,你需要优化程序设计,比如减少缓存使用,及时释放内存等;或者你可以直接增加内存(scaleup)。

      磁盘IO:磁盘IO过多会导致性能表现下降,严重时会导致相关线程阻塞。那么在后续的[分析程序的数据结构与算法]阶段,你可以考虑优化程序设计,减少IO量,减少小文件读写频率,增加缓存等等;或者你可以直接置换磁盘为SSD(scaleup)。

      网络IO:网络IO过多可能会被网络带宽限制,导致传输速度受限。那么在后续的[分析程序的数据结构与算法]阶段,你可以优化程序设计比如减小通信量;或你可以直接增加带宽(scaleup)。

    二、优化遵循的原则

    1、性能是平衡之道

    即在有限的资源下,提供最佳的访问能力及处理速度。木桶原理之:发现最差瓶颈,提升整体效率。呑吐量和响应速度兼顾。

    2、调优是量体裁衣

    根据不同的场景,针对性的提高适用性。如:前台的响应速度,后台的统计结果。前者用户耐心有限,后者需要丰富数据分析。

    三、优化范围

    硬件: 

      cpu的处理能力、缓存空间的大小、硬盘io能力、网络带宽等

    软件:

    1、JVM

    2、部署的容器(tomcat、jetty、jboss等)

    3、数据库(Mysql、SqlSever、Oracle、PostSQL)

    4、软件本身(代码质量、处理并发的能力、静态资源过大、数据库连接配置等)

    监控

       Linux监控:top、df、free等

         JVM监控:jstat(jvm统计监控)、jstack(堆栈跟踪工具)、jmap(内存影像工具)、jhat(jmap快照分析工具)等

       软件监控:Prometheus+granfana监控、skywalking等    

  • 相关阅读:
    官方示例之地球模块十:拔高GeoPolygon
    全景虚拟漫游技术实现(three.js vs ThingJS) Javascript 3D开发 前端 物联网 webgl 三维建模 3D模型 虚拟 全景
    一个3D城市地图应用工具,等你获取 3D 全景 可视化
    H5动画优化之路
    CSS3实现气泡效果
    清除浮动方法总结
    静态页面参数传递&回调函数写法&快速排序的实现方法
    使用SeaJS实现模块化JavaScript开发(新)
    《无懈可击的Web设计》_灵活的文字
    深入探究JavaScript中的比较问题
  • 原文地址:https://www.cnblogs.com/mlfz/p/13229207.html
Copyright © 2020-2023  润新知