第七周学习总结
性能测试
主观视角,可能不通过技术上的性能优化就能做到主观视角的优化,比如通过提早与用户交互。
客观视角
响应时间,最直观的反映了系统的快慢
吞吐量,单位时间(1s内为 TPS)内系统处理的请求数量 =(1000/响应时间ms)*并发数
性能计数器,System Load
性能测试 负载测试 压力测试 为三个测试阶段。稳定性测试:长时间测试、不规则请求压力测试。
测试结果列表:并发数、响应时间、TPS、错误率、Load、内存
性能优化
性能优化的两个基本原则:
你不能优化一个没有测试的软件
你不能优化一个你不了解的软件
性能优化一般方法:
1. 性能测试,获得性能指标。
2. 指标分析,发现瓶颈。
3. 架构与代码分析,寻找性能瓶颈关键所在。
4. 架构与代码优化,优化关键技术点、平衡资源分配。
5. 性能测试。
系统性能优化分层思想:机房与骨干网络、服务器硬件、操作系统、虚拟机、基础组件、软件架构、软件代码
软件架构性能优化三板斧:缓存、异步、集群
代码优化:仅仅因为代码太烂了、并发
使用的别人的工具、框架也有可能出问题,要分析性能指标,奇怪的指标很可能就是问题所在。
-------------------------------
代码时静态的,执行是动态的,一套代码会被多个进程、线程同时执行
进程线程运行状态:运行、就绪、阻塞,阻塞是性能关键点
进程堆 - 存放复杂类型对象
线程栈 - 存放基本数据类型的局部变量
多个线程修改进程堆中的对象时可能发生线程安全问题,比如修改单例对象中的属性(分别不同线程new出来的对象不存在这个问题)。lock是加在代码上的,谁获得锁谁能执行。
悲观锁、乐观锁。微软版本控制文件所类似悲观锁,git为乐观锁
akka
操作系统文件系统块大小 4k
raid 0 提高读写速度,但是文件损坏风险高。raid 1 双写备份。raid 10 结合前两种,但是硬盘利用率为50%。raid 5 利用异或校验信息提高读写速度及可用性。 raid 6 升级 raid 5。
HDFS 块大小64M
面试:基础知识、架构知识、编程知识
评论