性能优化的常见模式及趋势 | 陈显铭

性能优化的价值


从上图可以看出几个优点

  • 成本降低
  • 稳定性提升
  • 用户体验体验提升

性能优化的缺点也有

  • 维护成本增加:代码可能变复杂,结构可能变复杂,技术栈可能变复杂

性能优化的两种模式

个人总结,性能优化整体上可以分为两类:单应用优化和结构型优化。

  • 单应用优化,关注单系统瓶颈,通过解决单系统瓶颈提升性能。
  • 结构型优化,通过改造链路结构和配比,进行整体性能的优化。

单应用优化常见步骤

优化基本思路(闭环)

  1. 确定性能瓶颈/热点
  2. 确定优化方案
  3. 实施、反馈优化情况

确定性能瓶颈/热点的常见方法

  1. 性能压测:通过工具/人肉等方式量化运行时性能情况
  2. 业务/代码梳理:通过代码走读,发现资源消耗热点(牛B的人可以这么干);通过统计代码对资源的操作,量化代码对资源的消耗(比如一个业务操作会进行多少次数据库调用,会进行多少次服务运算等方式)

压测时常观察的内容及工具有(举例java应用)

  1. 压测工具:jmeter
  2. 内存的使用情况:mat,gc日志,vmstat
  3. IO情况:iostat
  4. 网络情况:netstat
  5. 热点代码:jprofile,btrace,jstack,jstat
  6. CPU情况:top

优化的常见手段或模式

  1. 静态化:动态数据和静态数据分离。
  2. 异步化:使用异步化减少主流程中的非关键业务逻辑。
  3. 并行化:使用多线程并发处理,缩短响应时间。
  4. 内存优化:减少对象大小,减少对象创造,数据模型优化
  5. 去重复运算:业务逻辑优化,或者使用缓存
  6. 减少数据库操作:数据冗余,数据缓存等
  7. 缩短数据库事务:短事务,异步化,最终一致性等方式可以考虑
  8. 精简代码逻辑:去除冗余代码,诸如过度设计检查等代码。
  9. 精简日志操作:日志大小要关注,注意IO上的瓶颈;日志太多,说明生成的string也会多,也增加了gc负担
  10. 等等

结构型优化常见步骤

此部分介绍的内容,在很多网站架构变迁的文章中介绍过,这里通过图的方式展现出来。

每个阶段都有适用的软件架构,基于成本、建设复杂度、维护成本的考虑,不必强求一开始建设很完整的技术体系。

个人认为,性能是驱动应用体系研究的重要驱动力,可以通过下面应用结构演进看出来。

1、单应用时代常见瓶颈先发生在DB

2、单应用时代常见第一个解法是使用缓存(偏向应用级别缓存)


3、单应用时代常见第一个解法是独立缓存服务(集中式缓存,如memcache)


3、单应用集中式部署带来应用集群处理能力提升

4、单应用集中式部署部署后的DB瓶颈

5、单应用集中式部署部署后的DB瓶颈解法(数据库拆分、读写分离)

6、服务化拆分应对更大范围请求量

服务化集群部署模式

两个结构优化的案例

处理单点/网络瓶颈的可行方式


处理数据库连接池瓶颈的可行手段



总结:性能/应用优化的几个趋势

作者:征途小丘,陈显铭,蚂蚁金服技术专家,分享性能优化的常见模式及趋势

原文链接性能优化的常见模式及趋势

时间: 2024-07-29 04:11:40

性能优化的常见模式及趋势 | 陈显铭的相关文章

蚂蚁金服技术专家对性能优化的常见模式及趋势的思考

发表自<中生代>微信公众号.作者是陈显铭,从事研发工作七年,蚂蚁金服技术专家.对于性能优化的思考,很有价值,分享给大家. 从上图可以看出几个优点 成本降低 稳定性提升 用户体验体验提升 性能优化的缺点也有 维护成本增加:代码可能变复杂,结构可能变复杂,技术栈可能变复杂 性能优化的两种模式 个人总结,性能优化整体上可以分为两类:单应用优化和结构型优化. 单应用优化,关注单系统瓶颈,通过解决单系统瓶颈提升性能. 结构型优化,通过改造链路结构和配比,进行整体性能的优化. 单应用优化常见步骤 优化基本

性能优化之几种常见压测模型及优缺点 | 陈显铭

上一篇讲的是<性能优化的常见模式及趋势>,今天接着讲集中常见的压测模型. 通过上一章我们大概知道了性能优化的一些招式,但是怎么发现有性能问题,常见的模式还是需要压测.下面列举进行列举. 压测模型抽象 可以把压测模型抽象为上图的模型. 压测环境准备 压力机资源 被压测系统 依赖资源(压测数据,第三方依赖) 压测策略准备 压测需要达到的目标(比如期望达到的QPS,稳定性要求等) 压测场景(业务场景选取.组合) 压测策略(逐步加压.脉冲.并发量等) 压测执行闭环 压力机压测 分析程序收集压测数据(R

蚂蚁金服技术专家总结:性能优化的常见招式

本文主要会介绍性能评估的一些简单概念以及性能压测/性能瓶颈的识别方法和一些常见的优化方式.虽然内容很多,但是目的在于让大家有个全局的认识:本文虽然深入度上面稍微欠缺,但是足以应对日常的性能分析. 为什么大家觉得性能优化难? 很多人觉得性能优化难的原因,其实主要是不知道怎么去做评估,主要表现在一下几个方面 1.不知道性能是什么? 2.不知性能的评估标准是什么? 3.不知道影响性能的相关元素是什么? 4.不知道性能问题的带来的现象是什么? 性能优化,必须知道的几个概念 关于性能的几个基础概念就像一把

MySQL · 性能优化 · MySQL常见SQL错误用法

前言 MySQL在2016年仍然保持强劲的数据库流行度增长趋势.越来越多的客户将自己的应用建立在MySQL数据库之上,甚至是从Oracle迁移到MySQL上来.但也存在部分客户在使用MySQL数据库的过程中遇到一些比如响应时间慢,CPU打满等情况.阿里云RDS专家服务团队帮助云上客户解决过很多紧急问题.现将<ApsaraDB专家诊断报告>中出现的部分常见SQL问题总结如下,供大家参考. 常见SQL错误用法 1. LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方.比如

【干货合集】你所不知道的蚂蚁技术系列之(一):系统设计、性能优化、运维

8月30-31日20:00-21:30,一场别开生面的技术大会-- "蚂蚁金服&阿里云在线金融技术峰会"将在线举办.本次将聚焦数据库.应用架构.移动开发.机器学习等热门领域,帮助金融业技术开发者深入解析互联网应用的前沿应用与技术实践. 蚂蚁金服&阿里云在线金融技术峰会专题:https://yq.aliyun.com/activity/109 峰会统一报名链接:http://yq.aliyun.com/webinar/join/38 2015双11,蚂蚁金服旗下支付宝共完

java 程序性能优化《第二章》设计优化 2.1善用设计模式 2 代理模式

java 程序性能优化<第二章>设计优化 2.1善用设计模式 2 代理模式 代理模式也是一种很常见的设计模式.它使用代理对象完成用户请求,屏蔽用户对真实对象的访问.就如同现实中的代理一样,代理人被授权执行当事人的一些适宜,而无需当事人出面,从第三方的角度看,似乎当事人并不存在,因为他只和代理人通信.而事实上,代理人是要有当事人的授权,并且在核心问题上还需要请示当事人. 在现实中,使用代理的情况很普遍,而且原因也很多.比如,当事人因为某些隐私不方便出面,或者当事人不具备某些相关的专业技能,而需要

SQLSERVER 2012之AlwaysOn -- 同步模式下的网卡性能优化

原文:SQLSERVER 2012之AlwaysOn -- 同步模式下的网卡性能优化 本文是基于上一篇<SQLServer 2012之AlwaysOn -- 指定数据同步链路,消除网络抖动导致的提交延迟问题>的问题继续进行优化:具体背景请参照上文:     前后折腾了一个多月,最近终于把这块难啃的骨头搞定了.问题只是出在网卡的高级功能上:     解决方案:关闭网卡的高级功能Jumbo Mtu和Large Send Offload V2     问题分析:根据Broadcom Ethernet

在SQL server的性能优化过程中的常见技巧

在SQL server 的http://www.aliyun.com/zixun/aggregation/14109.html">性能优化过程中,TSQL的语句优化是很重要的一环.当您使用各种手段找出系统最需要优化的语句后,应该如何对该语句进行优化呢?下面列出一些TSQL 语句优化的常见技巧. 1. 语句的执行计划分析 首先要对该语句的执行计划(execution plan)进行分析,找出语句运行慢的原因.比如说, <>在检查执行计划是否包含table scan /index

历年双11实战经历者:我们是如何做数据库性能优化及运维-CloudDBA和天象

8月24日阿里云数据库技术峰会上,阿里云高级DBA专家玄惭带来面对超大规模的数据库集群,尤其是在每年像双11这样重大促销活动中,阿里云是如何进行运维和优化的.本文主要介绍了天象和CloudDBA两个产品,包括他们的起源.基于系统画像仓库的应用.产品化等,最后对RDS产品的可诊断性建设和可运维性建设作了补充.   随着云数据库时代的到来,它的运维体系不仅仅包括保持数据库集群的稳定,同时我们还要关注用户体验.在业务上,体量大,用户各类,例如有公有云小客户,也有企业大客户,每类客户的需求都各式不一,众