软件性能优化的两个基本原则
- 你不能优化一个没有测试的软件
 - 你不能优化一个你不了解的软件
 
性能测试的主要指标
- 响应时间:完成一次任务花费的时间。
 - 并发数:同时处理的任务数。
 - 吞吐量:单位时间完成的任务数。
 - 性能计数器:System Load,线程数,进程数,CPU,内存,磁盘,网络使用率
 
Spark 应用性能测试

性能优化的一般方法
- 性能测试,获得性能指标
 - 指标分析,发现性能与资源瓶颈点
 - 架构与代码分析,寻找性能与资源瓶颈关键所在
 - 架构与代码优化,优化关键技术点,平衡资源利用
 - 性能测试,进入性能优化闭环
 
不要拿着锤子去砸钉子,而是要找钉子。
系统性能优化的分层思想
- 机房与骨干网络性能优化
 - 服务器与硬件性能优化
 - 操作系统性能优化
 - 虚拟机性能优化(垃圾回收,即时编译,锁)
 - 基础组件性能优化
 - 软件架构性能优化(分布式缓存,队列,消息等)
 - 软件代码性能优化
 
机房与骨干网络性能优化

美国到中国 300ms,就近提供服务器可以提升访问速度。
服务器与硬件性能优化

普通硬盘是毫秒级,
硬件性能优化案例
网络传输达到上限。
优化方案:升级网卡,10G网卡代替1G网卡。

操作系统性能优化
操作系统性能优化案例

虚拟机性能优化

基础组件性能优化

软件架构性能优化三板斧
- 缓存
 - 异步
 - 集群
 
缓存

异步
- 即时响应,更好的用户体验。
 - 控制消费速度,合适的负载压力。
 - 异步主要优化写操作。
 

集群

软件代码性能优化
遵循面向对象的设计原则与设计模式编程,很多时候程序性能不好不是因为性能上有什么技术挑战,仅仅就是因为代码太烂了。
- 并发编程,多线程与锁。
 - 资源复用,线程池与对象池。
 - 异步编程,生产者消费者。
 - 数据结构,数组,链表,hash表,树
 
代码优化案例


