写点什么

性能优化 - 性能测试, 系统优化, 锁

用户头像
garlic
关注
发布于: 2020 年 11 月 08 日
性能优化-性能测试,系统优化,锁

性能测试:

性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准。

性能测试指标:

  • 响应时间:指应用系统从发出请求开始到收到最后响应数据所需要的时间;

  • 并发数:系统能够同时处理请求的数目;

  • 吞吐量: 指单位时间内系统处理的请求的数量;

  • 性能计数器: 是描述服务器或操作系统性能的一些数据指标

性能测试方法:

  • 性能测试: 以系统预期性能指标为预期目标, 不断施压验证系统性能指标.

  • 负载测试: 不断增加系统压力, 道道安全临界值

  • 压力测试: 超过负载的测试,知道系统无法处理

  • 稳定性测试: 在恒定的业务压力下使得系统运行较长时间


全链路测试


全链路压测其实指的就是在特定的业务场景下,将相关的链路完整的串联起来同时施压, 尽可能模拟出真实的用户行为. 暴露出系统的问题.

数据构造:

线上数据筛选,脱敏,ID 隔离,订正做为压测基础数据, 压测是对数据进行预测,按比例方法, 构造压测数据集合

数据隔离:

逻辑隔离: 生产环境打标, 需要进行数据清理

虚拟隔离: 写入 MOCK 端, 不影响生产环境,测试不准确.

物理隔离: 写入指定物理设备, 单独的压测环境

流量构造:

以天猫为例, master+slave 结构, master 作为压测管控台管理着上千 个 slave 节点;slave 节点作为压测 引擎,负责具体的请求发送。其中 Slave 部署在全球各地的 CDN 节点上. 模拟全球用户发送的请求.

全链路压测平台化:


使得全链路压测常态化.


性能优化


原则


  • 不能优化一个没有测试的软件

  • 不能优化一个你不了解的软件


性能优化方法


  • 性能测试 获得性能指标

  • 指标分析 发现瓶颈点

  • 架构和代码分析 寻找瓶颈点

  • 架构代码优化,优化关键技术点,平衡资源

  • 再进行性能测试


分层思想

  • 机房与骨干网络性能优化

  • 服务器与硬件性能优化

  • 操作系统性能优化

  • 虚拟机性能优化

  • 基础组件性能优化

  • 软件架构性能优化

  • 软件代码性能优化


软件架构性能优化

  • 缓存

  • 异步

  • 集群


代码性能优化

  • 并发编程,对线程与锁

  • 资源复用,线程池与对象池

  • 异步编程,生产者消费者

  • 数据结构,数组,链表,hash 表,树


操作系统优化


多任务环境

进程分时执行, 运行状态分为:运行, 就绪,阻塞


进程 VS 线程

进程间 CPU 切换,代价非常大, 因此服务器通常是单进程多线程, 线程共享进程资源. 线程通过线程栈保存各自状态信息.


线程安全


多线程访问共享资源的代码称为临界区,解决线程安全是使用锁


避免阻塞引起的崩溃


  • 限流:控制接入请求数

  • 降级:关闭部分程序

  • 反应式: 异步


锁原语 CAS


CAS(V,E,N)

  • V 要更新的变量

  • E 预期值

  • N 新值

原语的执行必须是连续的. 执行过程中不能中断


Java 使用锁


偏向锁: 指一段同步代码一直被一个线程所访问,那么该线程会自动获取锁

轻量级锁: 当被其他进行访问升级为轻量级锁

重量级锁: 进入阻塞状态,膨胀为重量级锁 .


多 CPU 下的锁


总线锁: 使用处理器 LOCK#信号,在总线上发送此信号,其他处理器被阻塞

缓存锁: 允许它的缓存一致性机制来保证操作的原子性,


公平锁: 按顺序

非公平锁: 有优先级


可重入锁: 可以再次获取而不被死锁


独享锁/互斥锁: 只能被一个线程使用

共享锁: 可以被多个线程持有

读写锁:多个读线程之前并不互斥,写线程互斥


乐观锁:在更新数据的时候,检查是否已经被修改过,如果修改过,就放弃

悲观锁: 对于同一个数据的并发操作,悲观锁采取加锁的形式。


分段锁:是细化锁的粒度, 仅仅针对数 组的一段进行加锁操作. JDK ConcurrentHashMap 是


自旋锁: 指尝试获取锁的线程不会立即阻塞


案例 异步并发分布式编程框架 akka


  • 使用 Actor 模型

  • 异步非阻塞

  • 支持 Local 和 Remote 模式

  • 树状结构,上级可以处理下级异常

  • 通过 Router Actor 集群模式

  • 异常交给父类处理


参考及引用



架构师训练营作业-李智慧老师相关讲义

Photo by Umberto Shaw from Pexels


用户头像

garlic

关注

还未添加个人签名 2017.11.15 加入

还未添加个人简介

评论

发布
暂无评论
性能优化-性能测试,系统优化,锁