架构师第七周学习总结

用户头像
小蚂蚁
关注
发布于: 2020 年 07 月 22 日

一、性能测试

(一)性能指标

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

并发数:系统能够同时处理请求的数目,这个数字也反映了系统的负载特征。

吞吐量:指单位时间内系统处理的请求的数量,体现系统的处理能力。

        吞吐量=(1000/响应时间ms)X并发数

性能计数器:指应用服务器或操作系统性能的一些数据指标。包括:system Load、对象与线程数、内存使用、cpu使用、网络和IO使用等。

(二)性能测试方法

性能测试是一个总称,具体可分为性能测试、负载测试、压力测试、稳定性测试。

性能测试:以系统设计初期规划的性能指标为预期目标,对系统不断施加压力,验证系统在资源可接受范围内,是否能够达到性能预期。

负载测试:对系统不断地增加并发请求以增加系统压力,直到系统的某项或多项性能指标达到安全临界值。压力测试:超过安全负载情况下,对系统继续施加压力,直到系统崩溃或不能再处理任何请求,以此获得系统最大压力承受能力。

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

(三)性能测试指标关系







二、性能优化

(一)性能优化基本原则

(1)不能优化一个没有测试的软件。

(2)不能优化一个不了解的软件。

(二)性能优化的方法

(1)性能测试获得性能指标

(2)指标分析,发现性能和资源瓶颈点。

(3)架构和代码分析,寻找性能和资源瓶颈关键所在。

(4)架构和代码优化,优化关键技术点,平衡资源利用。

(5)性能测试,进入性能测试闭环。

(三)性能优化分层

(1)机房与骨干网络性能优化

(2)服务器与硬件性能优化

(3)操作系统性能优化

(4)虚拟机性能优化

(5)基础组件性能优化

(6)软件架构性能优化

(7)软件代码性能优化

三、操作系统

(一)程序运行时架构





(二)进程运行时状态

(1)运行

进程在CPU运行

(2)就绪

一个进程获得了除cpu之外的所有资源

(3)阻塞

一个进程等待某个事件发生

(三)进程和线程





(四)java web应用多线程运行视图





(五)锁

(1)锁原语CAS

CAS 操作包含三个操作数 —— 内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值。否则,处理器不做任何操作。无论哪种情况,它都会在 CAS 指令之前返回该位置的值。(在 CAS 的一些特殊情况下将仅返回 CAS 是否成功,而不提取当前值。)CAS 有效地说明了“我认为位置 V 应该包含值 A;如果包含该值,则将 B 放到这个位置;否则,不要更改该位置,只告诉我这个位置的值即可。”

通常将 CAS 用于同步的方式是从地址 V 读取值 A,执行多步计算来获得新值 B,然后使用 CAS 将 V 的值从 A 改为 B。如果 V 处的值尚未同时更改,则 CAS 操作成功。

类似于 CAS 的指令允许算法执行读-修改-写操作,而无需害怕其他线程同时修改变量,因为如果其他线程修改变量,那么 CAS 会检测它(并失败),算法可以对该操作重新计算。CAS 的价值是它可以在硬件中实现,并且是极轻量级的(在大多数处理器中)。

(2)锁分类

(a)偏向锁、轻量级锁、重量级锁

  (b)总线锁与缓存锁

(c)公平锁非公平锁

(d)可冲入锁

(e)互斥锁、共享锁、读写锁

(f)乐观锁和悲观锁

(g)分段锁、自旋锁



用户头像

小蚂蚁

关注

还未添加个人签名 2018.08.10 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
请加“极客大学架构师训练营”标签,便于分类
2020 年 07 月 22 日 18:07
回复
没有更多了
架构师第七周学习总结