目的
性能调优的步骤
按模块调优的基本方案
性能调优的一般性原则
性能调优的常用方案
性能调优的步骤
1 衡量系统现状(通过性能测试得到性能指标)
2 设定调优目标
3 寻址性能瓶颈
4 性能调优(本节内容)
5 调优完毕后,衡量是否达到目标
主要针对每个模块进行优化,前端优化,浏览器优化,代码优化,存储优化(注意:方案不是直接套用,需结合实际业务场景来确定较为合适的方案)
每个模块的优化方案
1 前端优化 网站业务逻辑之前的部分
2 浏览器优化 减少http请求数,使用浏览器缓存,启用压缩,CSS,JS位置,JS异步,减少cookie传输,CDN加速,反向代理
3 代码优化 多线程,资源复用(对象池,线程池),良好的数据结构,JVM调用,单例,cache等
4 存储优化 缓存,固态硬盘,光纤传输,优化读写,磁盘冗余,分布式存储(hdfs),nosql(非结构化)
性能调优的一般性原则
1 依赖数据而不是凭空猜测(第一原则) 当怀疑性能有问题时,应该通过测试,日志,profile来分析(系统资源,程序代码,服务器配置) 确定性能瓶颈
2 忌过早优化
3 忌过度优化
4 性能优化是持久战
5 选择合适的衡量标准,测试用例,测试环境(客观反映性能的实际情况)
性能调优的常用方案
1 缓存 没有什么性能问题是缓存解决不了的,如果有,那就再加一级缓存(典型的空间换时间)
2 并发 一个人干不完的活,那就找两个人干(增加了系统的吞吐,减少了用户的平均等待时间) 粒度(多机器,多进程,多线程)
2.1 无状态服务 采用集群
2.2 有状态服务 每个节点提供同样的数据或每个节点只提供部分数据
3 惰性 将计算推迟到必须的时刻(很可能避免了多余的计算,甚至根本不用计算)
4 批量 合并,在IO(网络IO,磁盘IO)的时候,合并操作,批量操作往往能提升吞吐,提高性能
5 使用成熟方案 空间换时间,时间换空间
6 缩小解空间 在一个更小的数据范围内进行计算,而不是遍历全部数据,最常用的是索引