运动员追求更高,更快,更强,那么程序员追求更快,更短,更少。性能优化有很多种途径和层次。看到别人关于性能优化的总结总是下意识的打开看看,虽然所面对的业务场景都不一样,但基本路数都类似, 定位性能瓶颈,提出并实现解决方案,验证优化成果。
现摘录博客:https://yq.aliyun.com/articles/54004?&utm_campaign=sys&utm_medium=market&utm_source=edm_email&msctype=email&mscmsgid=3210116060800412531&
性能优化的两种模式
个人总结,性能优化整体上可以分为两类:单应用优化和结构型优化。
单应用优化,关注单系统瓶颈,通过解决单系统瓶颈提升性能。
结构型优化,通过改造链路结构和配比,进行整体性能的优化。
单应用优化常见步骤
优化基本思路(闭环)
确定性能瓶颈/热点
确定优化方案
实施、反馈优化情况
确定性能瓶颈/热点的常见方法
性能压测:通过工具/人肉等方式量化运行时性能情况
业务/代码梳理:通过代码走读,发现资源消耗热点(牛B的人可以这么干);通过统计代码对资源的操作,量化代码对资源的消耗(比如一个业务操作会进行多少次数据库调用,会进行多少次服务运算等方式)
压测时常观察的内容及工具(举例java应用)
压测工具:jmeter
内存的使用情况:mat,gc日志,vmstat
IO情况:iostat
网络情况:netstat
热点代码:jprofile,btrace,jstack,jstat
CPU情况:top
优化的常见手段或模式
静态化:动态数据和静态数据分离。
异步化:使用异步化减少主流程中的非关键业务逻辑。
并行化:使用多线程并发处理,缩短响应时间。
内存优化:减少对象大小,减少对象创造,数据模型优化
去重复运算:业务逻辑优化,或者使用缓存
减少数据库操作:数据冗余,数据缓存等
缩短数据库事务:短事务,异步化,最终一致性等方式可以考虑
精简代码逻辑:去除冗余代码,诸如过度设计检查等代码。
精简日志操作:日志大小要关注,注意IO上的瓶颈;日志太多,说明生成的string也会多,也增加了gc负担
等等
结构型优化常见步骤
此部分介绍的内容,在很多网站架构变迁的文章中介绍过,这里通过图的方式展现出来。
每个阶段都有适用的软件架构,基于成本、建设复杂度、维护成本的考虑,不必强求一开始建设很完整的技术体系。
1、单应用时代常见瓶颈先发生在DB
2、单应用时代常见第一个解法是使用缓存(偏向应用级别缓存)
3、单应用时代常见第一个解法是独立缓存服务(集中式缓存,如memcache)
4、单应用集中式部署部署后的DB瓶颈
5、单应用集中式部署部署后的DB瓶颈解法(数据库拆分、读写分离)
6、服务化拆分应对更大范围请求量
总结:性能/应用优化的几个趋势
单应用---》多应用
集中化部署--》分布式部署--》单元化部署
单机房部署--》多机房部署--》异地多机房部署
单系统优化--》结构系统优化
分享到:
相关推荐
本书讲述Oracle 性能优化技术。书中对给出的每一种优化方法和措施都从...年以来关于性能优化人们一直认为是正确的某些错误观点和方法提出了批判,令人信服地证明了这些观 点和方法的荒诞,提出了较为正确的观点和方法。
"性能优化.7z"这个压缩包文件很可能包含了一系列关于性能优化的技术文档、代码示例或者工具,帮助我们理解和实践性能优化的方法。尽管没有具体的标签来细化这些内容,我们可以根据一般性能优化的常见领域进行讨论。 ...
性能优化手册是一套java性能学习研究小技巧,包含内容:Java性能优化、JVM性能优化、服务器性能优化、数据库性能优化、前端性能优化等。 内容包括但不限于: String 性能优化的 3 个小技巧 HashMap 7 种遍历方式...
ORACLE SQL性能优化系列 ORACLE SQL性能优化是数据库管理员和开发者非常关心的一个话题。为了提高数据库的性能,ORACLE 提供了多种优化技术。下面我们将详细介绍 ORACLE SQL 性能优化系列中的一些重要知识点。 一...
### 大型网站性能优化实战从前端网络CDN到后端大促的全链路性能优化 #### 一、基于用户体验的性能优化要素 在现代互联网应用中,用户体验是衡量一个网站成功与否的重要标准之一。良好的用户体验不仅仅体现在美观的...
【Android性能优化】是Android开发中的重要环节,涵盖了多个关键领域,包括ANR问题解析、crash监控方案、启动速度与执行效率优化、内存优化、耗电优化、网络传输与数据存储优化以及APK大小优化。 **ANR问题解析**是...
C++性能优化是一个复杂的主题,它涉及编译器、算法、语言特性、硬件架构以及操作系统等多个层面。性能优化的目标是提升软件执行效率,减少资源消耗,缩短响应时间,以及提高吞吐量。下面将详细介绍这些性能优化的...
Unity性能优化 Unity性能优化是指在游戏开发中提高游戏性能的过程,包括优化CPU和GPU的使用,以提高游戏的帧率和画质。下面是 Unity性能优化的相关知识点: 1. Unity性能调试工具及使用方法 Unity提供了多种...
在构建和运行大型Java网站的过程中,性能优化是至关重要的,它直接影响着用户体验、服务器资源的利用率以及业务的可扩展性。本实战指南将探讨从前端网络到后端大促的全链路性能优化策略,旨在提升网站的整体效率。 ...
根据提供的文件信息,我们可以推断出这是一本关于Java程序性能优化的书籍,作者是葛一鸣,并提供了该书PDF版本的下载链接。虽然没有具体的书籍内容,但基于标题、描述以及通常这类书籍会涉及的主题,我们可以总结出...
达梦数据库性能优化 达梦数据库作为国产数据库市场占有率第一的高性能、高可靠性、高安全性、高兼容性大型关系型数据库管理系统,已经成功替代了Oracle,在电力、金融、电子政务、教育等行业领域得到了广泛的应用,...
【文件】:“Tomcat7性能优化调优.docx”可能包含了关于Tomcat7性能优化的具体步骤、最佳实践和案例分析,这对于我们深入理解如何优化Tomcat7非常有价值。 以下是一些可能的Tomcat性能优化知识点: 1. **内存配置*...
### 性能优化的核心概念与实践 #### 一、什么是性能优化? 性能优化是指通过一系列技术和方法提升系统或应用程序在处理任务时的速度、效率及稳定性等指标的过程。它旨在充分发挥硬件资源的优势,同时减少不必要的...
Web前端性能优化数据 性能优化Web前端性能优化数据 性能优化Web前端性能优化数据 性能优化Web前端性能优化数据 性能优化
C++应用程序性能优化C++应用程序性能优化