运维中性能优化的常见模式及趋势

运维 系统运维
本文介绍运维中的性能优化的价值、应用优化的模式和特点以及发展的几个趋势,供大家参考!

  作者介绍

[[162648]]

  陈显铭(蚂蚁金服技术专家,艺名山丘,公众号:loopfork)

  专注码砖七年之久,喜欢码砖,喜欢扔锤子(山丘之王出自寒冰王座)。常混迹中生代技术群(公众号:freshmanTechnology)、高效运维(公众号:greatops)等高大上社群。专注高可用、分布式、性能优化、稳定性、高效运维等方向。自我评价:不算出名,但是对于技术有一点点情怀,爱交友,欢迎技术讨论。

  性能优化的价值

  从上图可以看出几个优点:

  ◆ 成本降低

  ◆ 稳定性提升

  ◆ 用户体验体验提升

  性能优化的缺点有:维护成本增加,代码可能变复杂,结构可能变复杂,技术栈可能变复杂。

  性能优化的两种模式

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

  ◆ 单应用优化,关注单系统瓶颈,通过解决单系统瓶颈提升性能。

  ◆ 结构型优化,通过改造链路结构和配比,进行整体性能的优化。

  单应用优化常见步骤

  优化基本思路(闭环):

  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负担。

  等等。

  结构型优化常见步骤

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

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

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

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

  2.单应用时代常见***个解法是使用缓存(偏向应用级别缓存)。

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

  4.单应用集中式部署带来应用集群处理能力提升。

  5.单应用集中式部署部署后的DB瓶颈。

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

  7.服务化拆分应对更大范围请求量。

  8.服务化集群部署模式。

  两个结构优化的案例

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

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

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

责任编辑:火凤凰 来源: 高效运维
相关推荐

2018-08-08 10:09:47

自动化运维MySQL

2018-10-15 14:26:23

运维IT技术架构

2012-07-25 15:17:00

IT运维架构

2010-03-02 21:46:18

运维管理Mocha BSM摩卡软件

2010-01-21 22:19:25

网络优化运维管理摩卡软件

2016-11-25 17:51:48

华为ICT

2011-10-14 18:38:51

Linux运维趋势优化电子杂志

2009-03-30 16:47:29

政府运维管理广通科技

2012-02-15 14:49:45

2019-11-12 09:53:32

Linux 系统 数据

2023-05-23 22:06:47

云平台

2018-11-15 08:43:11

交换机硬件故障软件故障

2018-09-07 15:34:25

Linux运维故障

2022-06-01 07:22:24

CloudOps云运维框架

2014-06-12 08:58:04

运维

2022-03-04 10:38:48

人工智能智能运维AIOps

2024-08-14 16:09:10

2015-06-24 10:42:19

云计算运维自动化运维ANSIBLE

2010-08-12 15:38:39

IT运维网管软件摩卡软件

2019-03-21 14:18:38

iOS开发优化原因
点赞
收藏

51CTO技术栈公众号