这是本文档旧的修订版!
性能调优
调优基本思路(闭环)
确定性能瓶颈/热点
确定优化方案
实施、反馈优化情况
确定性能瓶颈/热点的常见方法
压测时常观察的内容及工具
优化的常见手段
静态化:动态数据和静态数据分离。
异步化:使用异步化减少主流程中的非关键业务逻辑。
并行化:使用多线程并发处理,缩短响应时间。
内存优化:减少对象大小,减少对象创造,数据模型优化。
去重复运算:业务逻辑优化,或者使用缓存。
减少数据库操作:数据冗余,数据缓存等。
缩短数据库事务:短事务,异步化,最终一致性等方式可以考虑。
精简代码逻辑:去除冗余代码,诸如过度设计检查等代码。
精简日志操作:日志大小要关注,注意IO上的瓶颈;日志太多,说明生成的string也会多,也增加了gc负担。
结构型优化常见步骤
此部分介绍的内容,在很多网站架构变迁的文章中介绍过,这里通过图的方式展现出来。
每个阶段都有适用的软件架构,基于成本、建设复杂度、维护成本的考虑,不必强求一开始建设很完整的技术体系。
个人认为,性能是驱动应用体系研究的重要驱动力,可以通过下面应用结构演进看出来。
单应用时代常见瓶颈先发生在DB。
单应用时代常见第一个解法是使用缓存(偏向应用级别缓存)。
单应用时代常见第一个解法是独立缓存服务(集中式缓存,如memcache)。
单应用集中式部署带来应用集群处理能力提升。
单应用集中式部署部署后的DB瓶颈。
单应用集中式部署部署后的DB瓶颈解法(数据库拆分、读写分离)。
服务化拆分应对更大范围请求量。
服务化集群部署模式。
性能/应用优化的几个趋势
参考帖子