返回
学盟学院

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

A5URp LV.2

2016-2-11 17:41:01

关注楼主

25221711002

性能优化的价值


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

◆ 成本降低

◆ 稳定性提升

◆ 用户体验体验提升

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

性能优化的两种模式

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

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

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

单应用优化常见步骤

优化基本思路(闭环):

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.服务化集群部署模式。

两个结构优化的案例

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

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

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



喜欢楼主的,可以打赏一波

学盟学院+关注

主题:14  帖数:9576

全部回复1002
玩火柴的小男孩 LV.5

沙发2016-2-11 17:41:04

我也来顶一下..
忘有 LV.5

板凳2016-2-11 17:42:48

我只是路过,不发表意见
华灯初上つ LV.5

地板2016-2-11 17:45:43

学习下
=我比她单纯 LV.5

5#2016-2-11 17:49:04

元芳你怎么看?
1234.. 201下一页
我说一句...

已赞

473

收藏

118

分享

新浪微博 QQ空间 QQ好友 腾讯微博 二维码 复制网址 举报主题

加载中...

  • /

  • 三十
  • 菜单