关于性能优化

标签: 性能优化 | 发表时间:2016-06-12 14:42 | 作者:h_1_y_m
出处:http://www.iteye.com
运动员追求更高,更快,更强,那么程序员追求更快,更短,更少。性能优化有很多种途径和层次。看到别人关于性能优化的总结总是下意识的打开看看,虽然所面对的业务场景都不一样,但基本路数都类似, 定位性能瓶颈,提出并实现解决方案,验证优化成果。
现摘录博客: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、服务化拆分应对更大范围请求量
总结:性能/应用优化的几个趋势
单应用---》多应用
集中化部署--》分布式部署--》单元化部署
单机房部署--》多机房部署--》异地多机房部署
单系统优化--》结构系统优化

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [性能优化] 推荐:

MySQL性能优化

- sun - IT程序员面试网
在笔试面试中,尤其是像百度,淘宝这些数据量非常大,而且用LAMP架构的公司,数据库优化方面就显得特别重要了. 此外,除了数据库索引之外,在LAMP结果如此流行的今天,数据库(尤其是MySQL)性能优化也是海量数据处理的一个热点. 下面就结合自己的经验,聊一聊MySQL数据库优化的几个方面. 首先,在数据库设计的时候,要能够充分的利用索引带来的性能提升,至于如何建立索引,建立什么样的索引,在哪些字段上建立索引,上面已经讲的很清楚了,这里不在赘述.

Hebernate 性能优化

- - 企业架构 - ITeye博客
文章分为十三个小块儿对Hibernate性能优化技巧进行总结性分析,分析如下:. 一、在处理大数据量时,会有大量的数据缓冲保存在Session的一级缓存中,这缓存大太时会严重显示性能,所以在使用Hibernate处理大数 据量的,可以使用session. clear()或者session. evict(Object) 在处理过程中,清除全部的缓存或者清除某个对象.

Hbase 性能优化

- - CSDN博客云计算推荐文章
因 官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果. 所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正. 默认值:3分钟(180000ms). 说明:RegionServer与Zookeeper间的连接超时时间.

JavaScript性能优化

- - ITeye博客
互联网泡沫让投资者长了记性:态度更加谨慎.         如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度. 这种情况下决定程序速度的另一个重要因素就是代码本身. 在这里我们会分门别类的介绍JavaScript性能优化的技巧,并提供相应的测试用例,供大家在自己使用的浏览器上验证, 同时会对特定的JavaScript背景知识做一定的介绍.

Mysql性能优化

- - 数据库 - ITeye博客
MySQL性能优化.   性能优化是通过某些有效的方法来提高MySQL的运行速度,减少占用的磁盘空间. 性能优化包含很多方面,例如优化查询速度,优化更新速度和优化MySQL服务器等.   数据库管理人员可以使用SHOW STATUS语句来查询MySQL数据库的性能. 语法:SHOW STATUE LIKE ‘value’;其中value参数是常用的几个统计参数.

Linux 性能优化

- - Gsion&apos;s Blog
1) Linux Proc文件系统,通过对Proc文件系统进行调整,达到性能优化的目的. 2) Linux性能诊断工具,介绍如何使用Linux自带的诊断工具进行性能诊断. 加粗斜体表示可以直接运行的命令. 二、/proc/sys/kernel/优化. 该文件有一个二进制值,该值控制系统在接收到ctrl+alt+delete按键组合时如何反应.

hbase性能优化

- - CSDN博客推荐文章
  当你调用create方法时将会加载两个配置文件:hbase-default.xml and hbase-site.xml,利用的是当前的java类路径, 代码中configuration设置的这些配置将会覆盖hbase-default.xml和hbase-site.xml中相同的配置,如果两个配置文件都存在并且都设置好了相应参上面的属性下面的属性即可.

oracle性能优化

- - 行业应用 - ITeye博客
                              oracle数据库的性能优化. 主要从内部存储结构,逻辑分区,表结构范式,sql语句优化. hibernate处的层次更高,主要从缓存,和sql语句的使用.     对于ORACLE数据库的数据存取,主要有四个不同的调整级别,第一级调整是操作系统级包括硬件平台,第二级调整是ORACLE RDBMS级的调整,第三级是数据库设计级的调整,最后一个调整级是SQL级.

mssql性能优化

- - 数据库 - ITeye博客
一、             分析阶段. 一般来说,在系统分析阶段往往有太多需要关注的地方,系统各种功能性、可用性、可靠性、安全性需求往往吸引了我们大部分的注意力,但是,我们必须注意,性能是很重要的非功能性需求,必须根据系统的特点确定其实时性需求、响应时间的需求、硬件的配置等. 另一方面,在分析阶段应该根据各种需求区分出系统的类型,大的方面,区分是OLTP(联机事务处理系统)和OLAP(联机分析处理系统).

Jquery性能优化

- - JavaScript - Web前端 - ITeye博客
一、注意定义jQuery变量的时候添加var关键字. 这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下:. $loading = $('#loading'); //这个是全局定义,不知道哪里位置倒霉引用了相同的变量名,就会郁闷至死的. 二、请使用一个var来定义变量.