架构师训练营第七周学习总结
性能测试
1.优化的前提和度量标准:性能优化的前提和基础;性能优化后的检查和度量标准
2.视角
主观视角(用户体验),主观优化:通过异步操作、信息提示等提升用户主观感受的性能
客观视角(性能指标)
3.性能指标
响应时间:系统快慢
并发数:同时请求的用户数
吞吐量:单位时间处理的请求数量
4.性能计数器
System Load系统负载:指当前正在被CPU执行和等待被CPU执行的进程数目总和
5.性能测试->负载测试->压力测试
不断增加压力,测试系统瓶颈
6.稳定性测试
长时间、模拟生产环境测试
性能优化
1.性能优化前:1.性能测试;2.了解系统
2.性能测试主要指标
响应时间
并发数
吞吐量
性能计数器:System Load、线程数、进程数、CPU、内存、磁盘、网络使用率
3. 性能优化一般方法
性能测试->分析指标->发现系统瓶颈->架构代码优化->性能测试
4.分层优化
操作系统
1.程序运行时架构
程序代码是静态的;运行起来之后称作进程
2.进程分时执行:CPU是有限的,进程数远大于CPU数量
3.进程状态:运行、就绪、阻塞
4.进程VS线程
进程间CPU切换,代价非常大;
5.线程栈-栈帧
6.Java Web 应用多线程运行时视图
7.线程安全;堆空间数据在多个线程同时修改
对临界区加锁
8.阻塞导致高并发系统崩溃
IO等操作导致线程一直阻塞,资源不能释放,导致资源耗尽,系统崩溃。
解决办法:
限流;降级;避免阻塞:异步IO;
锁
1.锁如何实现:CAS愿与修改对象头中Mark Word实现加锁
CAS(V,E,N):V-变量;E:预期值;N:新值
偏向锁:被一个线程访问
轻量级锁:自旋方式获取锁
重量级锁:自旋达到一定次数还位获取锁时,升级到重量级锁;产生阻塞
2.多CPU情况下的锁
总线锁:阻塞其他CPU
缓存锁:一致性机制来保证原子性
3.锁的种类
公平锁、非公平锁:重量级锁是公平的(monitor队列)
可重入锁:synchronized
独享锁/互斥锁、共享锁、读写锁
乐观锁、悲观锁
分段锁
自旋锁
4.AKKA
单机高并发、简单分布式
actor编程模型:异步消息;无锁、无阻塞
水平、垂直伸缩
案例:dew
文件与硬盘IO
机器硬盘、SSD硬盘:
文件存储: B+树、LSM树:连续写(内存->硬盘)
文件控制块
RAID独立硬盘冗余阵列:提高数据读写速度;
分布式文件系统
评论