性能优化概述
1:性能优化的前提原则
不能优化一个没有测试的系统
测试找到问题才能针对问题进行优化,优化是否有结果也要有测试来确认。
不能优化一个不了解的系统
不要用先进技术对不了解系统进行优化。充分了解系统才能去进行优化。
先了解问题再去解决,清楚问题比解决方法更重要
2:优化
2.1 两个角度的优化
1:主观指标优化
用户感受方面的优化可起到调整小,提高大的效果。
2:客观指标优化
客观指标:响应时间,并发数,吞吐量,性能计数等
客观指标需要技术人员去优化。
2.2 优化的流程
性能测试,获取性能指标
指标分析,发现性能与资源的瓶颈点
架构与代码分析:针对瓶颈分析架构与代码,找出瓶颈问题的关键所在
架构与代码优化:优化关键技术点,平衡资源利用。--优化关键
性能测试:验证优化结果,循环性能优化。
大部分情况下可能不是去调整自己的架构:而是优化外部问题:服务器,网络,基础组件,操作系统。
2.3 按分层思想去做性能优化
影响系统性能的原因不只是软件本身,还有软件所在的基础环境,及软件依赖的其他软件。因此实际优化时要根据问题在不同层次进行优化。
1:机房与骨干网
主要优化网络访问消耗,保住系统机房可靠。
包括:采用CDN,异地多活,网络专线,多服务商接入等手段
2:服务器与硬件性能
CPU,硬盘,网卡,内存,物理上的性能对系统性能的影响有时是指数级别的。
3:操作系统性能优化
系统的有些缺省配置需调整,或操作系统的版本选择等在特定问题上对系统影响也很大。
4:虚拟机性能优化
主要只系统运行的虚拟环境,如jvm 。对虚拟机的相关配置,包括内存回收等。
5:基础组件性能优化
系统运行需要依赖很多基础组件,包括数据库,应用服务,网络,rpc等各种中间件。
基础组件的性能特性也会严重影响系统性能,使用更好的组件,或组件的版本,提高系统性能。
6:软件架构性能优化
软件架构性能优化三板斧:缓存,异步,集群。
架构上优化的主要手法。
7:软件代码性能优化
属于开发基本功。
常用问题与手法:并发编程,资源复用(资源池,对象池),异步编程,数据结构与算法的优化。
如果要解决对各种情况导致的性能问题,需要掌握多个层次的知识,经过实践的不断锤炼。性能优化是个高积累的活。
2.4 性能优化三板斧
缓存,异步,分布式集群
系列目录
性能优化专题
评论