总结7

作者: yz08150 | 来源:发表于2020-07-22 17:15 被阅读0次

性能测试

性能测试 是 性能优化 的 前提和基础
性能测试 是 性能优化结果的 检查和衡量标准
主观视角:用户感受到的性能
客观视角:性能指标衡量的性能

性能测试指标
  • 响应时间
    请求到收到最后响应数据所经过的时间

  • 并发数
    并发数,指的是 系统能够同时处理请求的数目。
    注意是 同时,指的是,同一时间点上的 请求数

在同一时间点上请求的数目,实际上不会太多
1s内的 10W个请求,100ms的响应时间,大概同时也只能有 1000个并发

  • 吞吐量
    TPS QPS
    单位时间内的请求的数量
    吞吐量=(1000/响应时间ms) * 并发数
    根据上面的并发数的分析,可以看出来

  • 性能计数器
    描述服务器或操作系统性能的一些数据指标
    比如 cpu使用率,内存使用,网络,磁盘等性能指标

性能测试方法

image.png
性能测试

以系统设计初期的性能指标 为 预期目标,
对系统不断施加压力,验证系统在资源可接受范围内,是否能够达到性能预期
如上图中的 a-b 段

负载测试

在性能测试基础上,
对系统不断施加压力,直到系统的某项或多项性能指标到达安全临界值,
这时,继续对系统施加压力,系统的处理能力不但不能提高,反而会下降
如上图中的 b-c 段

压力测试

在负载测试基础上,
对系统继续施加压力,直到系统崩溃,或不能再处理任何请求,
以此获得系统最大压力承受能力
如上图中的 c-d 段

稳定性测试

被测试系统,在特定 硬件、软件、网络环境下,
给系统加载一定业务压力,并使系统运行一段较长时间
以此检测系统是否稳定。

实际生产环境中,请求压力是不均匀的,稳定性测试,也应该不均匀的施加压力来测试


image.png

全链路压测

模拟用户真实行为的请求测试,请求会走完所有的服务链路
测试以便找出性能瓶颈,以测试出整个系统的真实的处理能力,以确定以后如何扩容

全链路压测的挑战
  • 压测相关的业务系统众多,并且涉及链路上的所有基础设施和中间件,如何保证压测流量能够畅通无阻,没有死角?
  • 压测的数据怎么构造?亿万级的商品和用户,数据模型如何与真实接近?
  • 全链路压测直接在线上的真实环境进行模拟,怎么保证对线上无影响?
  • 大型促销活动所带来的巨大流量要怎么制作出来?
数据构造
image.png
数据隔离
image.png
流量构造
image.png
全链路压测平台化
image.png

针对每一层进行优化

  • 机房与骨干网路
    异地多活的多机房架构
    专线网络 和 自主CDN建设

  • 服务器与硬件
    使用更好的 CPU 硬盘 内存 网卡
    垂直伸缩

  • 操作系统
    各种系统参数优化

  • jvm虚拟机
    堆栈等参数优化

  • 基础组件
    选择更好的组件,更合适的版本

  • 软件架构

    • 缓存
    • 异步
    • 集群
  • 软件代码
    设计模式 设计原则 数据结构 算法
    并发 异步 资源复用

临界区

多个线程 访问 共享资源的这段代码 被 称为 临界区
解决线程安全问题的主要方法是使用锁

但是,加锁,会导致线程阻塞。多个线程阻塞,可能会导致系统崩溃

应避免阻塞引起的崩溃:

  • 限流,控制请求数
  • 降级,关闭部分功能程序的执行,尽早释放线程
  • 避免阻塞,比如 使用 异步I/O,无临界区(Actor模型)

CAS原语

CAS 有对应的系统的指令,可以原子的执行 CAS操作

java 通过 CAS原语 在对象头中修改 Mark Word实现加锁

偏向锁 轻量级锁 重量级锁
  • 偏向锁
    如果一段代码一直被一个线程访问,那么这个线程会自动获取锁,降低获取锁的代价

  • 轻量级锁
    指当锁是偏向锁的时候,其他线程来获取锁,则偏向锁就会升级为轻量级锁,其他线程会通过自旋的形式尝试获取锁,不会阻塞,可以提高性能

  • 重量级锁
    指当锁是轻量级锁时,尝试获取锁的线程虽然会自旋获取锁,但是不会一直自旋下去,如果一定次数后,还没有获取到锁,则锁膨胀为 重量级锁,此时尝试获取锁,就会进入阻塞

总线锁 与 缓存锁

因为每个CPU都有自己的缓存行,所以当多个线程同时操作一个变量时,可能会导致多个CPU都有这个变量的缓存,那么,这些CPU就需要缓存一致性协议来保证CPU中的缓存的一致

可以通过 总线锁的方式,独占共享内存,代价大

缓存锁 可以通过缓存一致性协议,来告诉其他CPU怎么处理这个变量的缓存

还有其他锁的分类

公平锁 非公平锁 :排队处理,还是抢占处理
可重入锁
独占所/互斥锁 共享锁/读写锁
乐观锁 悲观锁 :先获取数据再判断是否有效再加锁,还是先直接加锁
分段锁
自旋锁

相关文章

  • 2017-07-07

    黄佑凤7月7日总结:

  • 易效能8组第十二周的小组会议总结

    易效能8组第十二周的小组会议总结 打卡情况总结:许丽钦7/7 、刘佼佼7/7 、黎钦财7/7 ;万森 2/7、乐天...

  • 日总结 20160331 知行合一

    日期:2016年03月31日 星期四 连续总结:7天 累计总结:7天 累计未总结:0天 一、今日计划 二、任务完成...

  • 总结7

    这几天,我学到了很多。比如说梦想,怎么树立。该怎样去实现,努力。梦想不只是为了自己,而是要去帮助别人。使自己梦想在...

  • 7🈷总结

    7月30号 我是队长刘淑华 1.刚开始队员不积极,也不配合,都是我自己一个人在干着急,下午小队召开会议后,经过调节...

  • 总结7

    2017年6月23日 桃子今日工作总结: 1.一天的周末班补课,小学员来的人数不太多。本身就是补课,还是有好多学员...

  • 总结7

    2017年6月24日 桃子今日工作总结: 1.今天准备公开课的时候,真的挺紧张的。感觉我是那种需要把所有的事情都准...

  • 总结7

    性能测试 性能测试 是 性能优化 的 前提和基础性能测试 是 性能优化结果的 检查和衡量标准主观视角:用户感受到的...

  • 2018-07-10

    7-9的周总结

  • 10.1--10.7复盘

    国庆7天,好好反思总结

网友评论

      本文标题:总结7

      本文链接:https://www.haomeiwen.com/subject/cpwxkktx.html