架构师训练营 - 第七周
作业一(至少完成一项):
性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化,为什么?
1、从 0 到最佳运行点 b 时,系统资源足够,系统响应时间没有显著变化,吞吐量随着并发数的增加而显著增加,没有明显受阻。
2、从最佳运行点到最大负载点间,响应时间增加(增速加快),吞吐量增加(增速减少)。最大系统资源还有剩余,但会出现一定数量的,局部的线程等待资源分配,毕竟线程请求的资源不可能是互不竞争的。
3、最大负载点之后,响应时间增加(增速显著增加),系统吞吐量急剧降低。系统资源逐渐耗尽导致大量用户请求只能阻塞等待请求,或者是直接被拒绝返回超时
作业二:根据当周学习情况,完成一篇学习总结
第七周的两次课程中, 主要学习的内容是: 性能测试, 操作系统和文件系统知识
性能测试
性能指标
响应时间:发出请求到收到响应的间隔时间
并发数:系统能够同时处理请求的数目
吞吐量: TPS(每秒事务数)、HPS(每秒 HTTP 请求数)、QPS(每秒查询数)
吞吐量 = (1000/响应时间 ms)*并发数
性能计数器:描述服务器或操作系统性能的一些数据指标。包括 System Load、对象与线程数、内存使用、CPU 使用、磁盘与网络 I/O 等指标。对这些指标设置报警阀值,当监控系统发现性能计数器超过阀值的时候,就向运维和开发人员报警,及时发现处理系统异常
性能测试方法:
包括性能测试、负载测试、压力测试、稳定性测试等
性能测试:以系统规划的性能指标为预期目标进行测试,验证系统在资源可接受范围内,是否能达到性能预期。
负载测试:增加压力,直到系统的某项或多项性能指标达到安全临界值。
压力测试:超过安全负载后继续加压,直到系统崩溃,检测系统最大压力承受能力。
稳定性测试:模拟生产环境测试系统,在特定硬件、软件、网络环境条件下,对系统进行一段较长时间压力测试
系统测试
系统优化的前提和基础是性能测试。优化的视角有
主观视角:用户感受到的性能,
客观视角:性能指标衡量的性能
衡量系统的主要指标
响应时间:发出请求到收到响应的间隔时间
并发数:系统能够同时处理请求的数目
吞吐量: TPS(每秒事务数)、HPS(每秒 HTTP 请求数)、QPS(每秒查询数)
吞吐量 = (1000 / 响应时间 ms)* 并发数
性能计数器:描述服务器或操作系统性能的一些数据指标。包括 System Load、对象与线程数、内存使用、CPU 使用、磁盘与网络 I/O 等指标。对这些指标设置报警阀值,当监控系统发现性能计数器超过阀值的时候,就向运维和开发人员报警,及时发现处理系统异常
性能测试方法
性能测试的方法有性能测试、负载测试、压力测试、稳定性测试等
性能测试:以系统规划的性能指标为预期目标进行测试,验证系统在资源可接受范围内,是否能达到性能预期。
负载测试:增加压力,直到系统的某项或多项性能指标达到安全临界值。
压力测试:超过安全负载后继续加压,直到系统崩溃,检测系统最大压力承受能力。
稳定性测试:模拟生产环境测试系统,在特定硬件、软件、网络环境条件下,对系统进行一段较长时间压力测试
系统优化
优化的两个原则
不能优化一个没有测试的软件
不能优化一个你不了解的软件
系统优化的一般方法
性能测试,获得性能指标
指标分析,发现性能与资源瓶颈点
架构与代码分析,寻找性能与资源瓶颈关键所在
架构与代码优化,优化关键技术点,平衡资源利用
性能测试,进入性能优化闭环
系统性能优化的分层思想
机房与骨干网络性能优化
服务器与硬件性能优化: CPU、磁盘、内存、网卡。例如:瓶颈在网络带宽时,换高速网卡
操作系统性能优化
虚拟机性能优化
基础组件性能优化
软件架构性能优化, 软件架构性能优化三板斧: 缓存、异步、集群
软件代码性能优化
操作系统
主要需要理解运行在操作系统中的代码的形式是进程, 代码是 "死" 的, 进程是 "活" 的, 操作系统通过分时技术多进程运行, 一个进程中可以运行多个线程, 线程由 CPU 调度。
避免阻塞:限流、降级、异步 I/O、无临界区(Actor 模型)
CPU 如何保证高速缓存一致: 总线锁与缓存一致性协议
总结
关于操作系统和文件系统的知识很重要, 是理解很多技术的关键, 需要加强学习。性能优化的手段需要加强在生产中实践。
评论