性能调优怎么做,看过这一篇,菜鸟变大佬!

简介: 性能调优怎么做,看过这一篇,菜鸟变大佬!

在展开今天的内容之前,我们先来看一下, 是不是任何一个小屌丝都可以学习性能。


如果说 需求,开发,DB,运维,测试 是单一一门学科,

那么 性能 就是综合学科,

它包含了 需求分析,DB,开发,测试 ,运维的所有学科,

所以说,学习性能测试,你前期需要懂得是需求分析,DB设计,程序开发,自动化测试、运维。


是不是觉得 这小屌丝 不一般啊不一般~~


老话说得好,要想不努力,就得有前提~~

月薪三千的,可能开保时捷

月薪一万的,可能开速腾

月薪三万的,可能开迈腾

月薪十万的,可能开辉腾


不管怎么折腾… 有资本,才是最重要的~~



小屌丝看不下去了,

对小鱼说: 鱼叔,能不能别扯了,开整行不行~~

小鱼:阔以~


今天的内容,很牛X,是性能分析的一大重点,也是一大难点!!


性能优化关注内容

Web Server 服务 优化

程序优化

配置优化

数据库连接池优化

DB 优化

业务流程优化

结构优化

Web Server 服务 优化

对于Web服务性能优化的方向,一般是:

①页面静态化:比如访问的页面,先进行静态化后提供访问,减少DB负担;

②减少页面的Size;

>>减少图片尺寸、CSS合并、JS精简等;

>>客户端缓冲图片、样式等;

③去掉无用请求 与 数据;

④对数据做异步处理(非常关键);

⑤只能DNS 及CDN加速,让响应数据离用户更近,规避缓解网络瓶颈!


程序优化

程序优化是治本的方法,也是我们大部分来解决性能问题的一个措施。

当前性能测试大部分都是在 SIT(集成测试)测试完成后,在进行的,如果出现严重性能问题, 修改代码,代价太大~~

这不是熬几个通宵的事情,有可能看不到第二天的太阳。

所以为了规避这种问题,所以我们要提前做打算,这就体现了一个测试架构师的重(niu)要(bi)性。

顺序是啥嘞: 先架构后程序(即 先整体后个体)

系统架构的选择

栗如:

SSH(Struts、Spring、Hibernate)架构,应该是在当下最流行的 MVC模型, SSH为我们提供了明晰的层次结构,各层协同完成业务实现,即简化了设计过程,也加快了程序交付进程。

凡事有好的一面,必定有短板:如大型的业务系统,如果我们把大量的数据从数据库取出来,然后利用程序进行分析计算,我的天哪~~ 有没有想到 会增加 网络传输,而且在程序中进行处理有可能并不是最佳解决方案。 想想,如果把这些大数据量放在数据库计算, 是不是就非常的轻松+愉快呢。

所以,老话说得好,任何事情,都要量力而行。选择相对来说最优的方案,就是最佳方案!


程序优化

低效代码优化,不包含系统架构,就是纯粹的业务逻辑及算法低效。

如:逻辑混乱、调用继承不合理、内存泄露等

有问题,咱就得有对策,解决方法:

①表单压缩

>>减少网络传输量

② 局部刷新

>>页面中采取局部内容获取方式,减少向服务器请求次数

③仅取所需

>>只向服务器请求必要内容,只向客户端发送必要表单

④逻辑清晰

>>不做错误及多余调用,资源请求后能释放

⑤谨慎继承

>>对系统架构了解,特别是一些基础类,公共组件,合理利用

⑥程序算法优化

>>试着分析程序,是否需要用算法来提高程序效率(如果不会算法,那就别勉强了)。

⑦批处理

>>对大量的数据处理,最好能做成批处理:好处那是大大的~~

⑧延迟加载

>>大对象的展示,可以做延迟加载的方式,层层递进的显示明细。 这方法没毛病

⑨防止内存泄露

>>内存泄露,是由于对象无法回收造成的,特别需要注意的是长生命周期的对象~ 对象 不是女朋友,该整还得整

⑩减少大对象使用

>>防止在程序中声明及实例化大对象,不能为了方便而设计出大对象。 大对象太大,小体格的吃不消

⑪防止争用死锁

>>一般出现在线程同步的场景。

⑫索引

>>编写合理的SQL,尽量利用索引。

⑬存储过程

>>为了减少数据传输到应用层面,一般会在数据库层面利用存储过程来完成数据逻辑的运算,只需要回传少量的结果给应用层。

⑭内存分配

>>合理分配数据库内存,如PGA与SGA设置;不对大数据提供order by 操作,避免PGA 被占满。 是 PGA 不是PGone

⑮并行

>>使用多线程或线程来处理任务。

⑯异步

>>如用MQ(消息中间件)来解耦系统之间的依赖关系,减少阻塞。

⑰使用设计好的模式来优化程序

⑱选择合适的IO模式

>>如NIO, AIO等


配置优化

这作为一个老码农,应该非常准确的闪现出 JVM、连接池、缓存机制、CDN等优化手段。

①JVM配置优化:

>>合理分配堆与非堆的内存,配置适合的内存回收算法,提高系统服务能力。

②连接池:

>>数据库连接池可以节省建立链接与关闭链接的资源消耗。

③线程池:

>>通过缓存线程的状态来减少新建线程与关闭线程的开销,一般都是中间件进行配置,如在Tomcat的 server.xml文件中。

④缓存机制:

>>通过数据的缓存来减少磁盘读写的压力,缩小存储与CPU的效率差。


数据库连接池优化

数据库连接池存在的意义就是让链接复用。通过建立一个数据库连接池(缓冲区)以及一套链接使用、分配、管理策略,使得该连接池中的链接可以得到高效,安全的复用,避免了数据库连接频繁建立,关闭的开销。

以上没有唠到重点, 我们无非关注这三点:

①连接池的参数配置;

②连接池配置多少合适;

>>按需分配,够用就行!

小窍门:一般情况 数据库连接池的数量<中间件线程池的链接数量

③监控连接池。


不做太多举例,不然小鱼晚上都没时间锻炼了~


DB 优化

DB的优化思路就是一少 三减:

少做,

减少请求次数,

减少数据传输量

减少运算量(查询,排序,统计)

可以参考:Mysql的性能优化,这一篇就够


业务流程优化

架构的好坏,直接影响到整个系统的运行,所以,一个好的架构师,是一个系统的基石。

这种架构优化,留给架构师吧,不然他们干啥嘞~~


结构优化

结构优化就好比我们人类进化是一样一样的。

由最开始的单机结构 已经无法满足日渐增长的业务量,所以 架构的演变就这样开始了:

单机结构 →集群结构→分布式结构


下面我们就来瞅瞅,这些结构的构成图:

单机结构


image.png


集群结构


image.png

分布式结构


image.png

小屌丝: 看了这些,终于明白了,原来性能分析调优,需要这么多啊, 我一直以为遇到性能问题,直接让码农搬搬砖 就行了


小鱼:小屌丝,你这危险的思想,白富美知道吗??

小屌丝: 鱼叔, 别说了, 我在捋捋,这些内容,有点剌嗓子!

小鱼:这又不是玉米饼子,至于吗! 再说了,想想你的白富美,想想你的人生巅峰,看看你那屌丝样!!!

小屌丝: 鱼叔,啥也别说了, 我弄还不行吗!


调优,是一个复杂学科, 没有学霸的智商,得有学渣不要脸的劲,才能成为一个性能砖家。

切记,团队的支持,是最重要的,切勿单打独斗,因为你是斗不过的…

.

归根结底,我们分析,调优为了啥, 就是在客户发送请求的时候,我们以最快的速度响应给客户。


所以,性能,是一门学科,也是一门学问,更是一门艺术。

我们要做的,就是分析她,理解她,爱护她,最后给整的服服帖帖。

相关文章
|
2月前
|
前端开发 UED 开发者
开发同学如何理解业务?
本文深入探讨了理解业务的重要性及其对于软件开发流程的深远影响。
|
5月前
|
Java 应用服务中间件 程序员
JVM知识体系学习八:OOM的案例(承接上篇博文,可以作为面试中的案例)
这篇文章通过多个案例深入探讨了Java虚拟机(JVM)中的内存溢出问题,涵盖了堆内存、方法区、直接内存和栈内存溢出的原因、诊断方法和解决方案,并讨论了不同JDK版本垃圾回收器的变化。
64 4
|
10月前
|
缓存 算法 Java
堪称神级的阿里巴巴“高并发”教程《基础+实战+源码+面试+架构》
作为一个普普通通的程序员,如何才能提升自己的能力,在职场上拥有一技之长,这也成为普通的你我,迫切的需求。
|
消息中间件 缓存 分布式计算
真牛!阿里最新发布这份《亿级高并发系统设计手册》涵盖所有操作
前言 我们知道,高并发代表着大流量,高并发系统设计的魅力就在于我们能够凭借自己的聪明才智设计巧妙的方案,从而抵抗巨大流量的冲击,带给用户更好的使用体验。这些方案好似能操纵流量,让流量更加平稳得被系统中的服务和组件处理。 那我们改如何应对大流量的三种方式? 第一种方法:Scale-out。 第二种方法:使用缓存提升性能 第三种方法:异步处理 面试京东,阿里这些大厂遇到这些问题改怎么办? 秒杀时如何处理每秒上万次的下单请求? 如何保证消息仅仅被消费一次? 如何降低消息队列系统中消息的延迟?
太牛了!腾讯T9耗时69天整理出最全架构师进阶核心知识点笔记
每一个程序员应该都想着如何快速提升自己(反正我是这样想的),从程序员进阶到架构师再到技术专家再到CTO 。当然这其中需要大量的知识储备,是一个不断学习的过程,话不多说下面我直接上图。
|
Java 缓存 Linux
如何回答性能优化的问题,才能打动阿里面试官?
阿里妹导读:日常工作中,我们多少都会遇到应用的性能问题。在阿里面试中,性能优化也是常被问到的题目,用来考察是否有实际的线上问题处理经验。面对这类问题,阿里工程师齐光给出了详细流程。来阿里面试前,先看看这篇文章哦。
21220 2
如何回答性能优化的问题,才能打动阿里面试官?
|
存储 缓存 架构师
京东架构师呕心整理:jvm与性能调优有哪些核心技术知识点
相信很多人对于性能调优都不陌生,为了获得更好的系统性能,或者是为了满足不断增加的业务需求。都需要用到我们的性能调优。所以性能优化在面试中出现的频率特别高,这篇文章我主要给大家整理了大厂里面关于jvm和性能调优用到的一些核心技术知识点。
126 0
|
设计模式 缓存 Java
好家伙!阿里新产Java性能优化(终极版),涵盖性能优化所有操作
上月公司来了一位大佬,入职不到一周就把公司现有项目的性能优化了一遍,直接给公司节省了一半的成本。 一问情况,才知道这位仁兄也是一路被虐过来的。去年年底被裁,本以为自己技术还行,看了一段时间面经,复习了基础知识,就开始投大厂简历。阿里最先给他面试机会,结果没能扛过三面,然后是各种大大小小的公司,在实际面试中被碾压得翻不了身。整整一个半月,一个offer都没拿到,最后针对性的恶补,才入职了我司。
|
消息中间件 JavaScript Java
老板,明年我来落地链路追踪-实现降本增效 | 上篇
老板,明年我来落地链路追踪-实现降本增效 | 上篇
618 0
|
SQL 移动开发 网络协议
【优化技术专题】「系统性能调优实战」终极关注应用系统性能调优及原理剖析(上册)
【优化技术专题】「系统性能调优实战」终极关注应用系统性能调优及原理剖析(上册)
171 0