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

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

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


如果说 需求,开发,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

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


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

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

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

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


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

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

.

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


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

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

目录
打赏
0
0
0
0
2522
分享
相关文章
不会性能调优,被面试官狂虐!全靠阿里Java性能调优全彩手册死撑
性能调优从来不是一件容易的事。 可是在工作和面试中,JVM调优、MySQL调优、各种分布式中间件的调优又都是绕不过的。
JVM知识体系学习八:OOM的案例(承接上篇博文,可以作为面试中的案例)
这篇文章通过多个案例深入探讨了Java虚拟机(JVM)中的内存溢出问题,涵盖了堆内存、方法区、直接内存和栈内存溢出的原因、诊断方法和解决方案,并讨论了不同JDK版本垃圾回收器的变化。
67 4
|
10月前
|
面试必备:一线大厂Redis设计规范与性能优化
本文梳理了在使用Redis过程需要遵循的一些最佳实践,包括针对架构维度的一些深入性能优化的知识,如果面试官问你:"说下在使用Redis的过程中,需要注意哪些规范?",如果你按照本文的思路回答,肯定能让面试官眼前一亮,offer自然就到手了。
154 0
面试必备:一线大厂Redis设计规范与性能优化
前端铜九铁十面试必备八股文——性能优化
前端铜九铁十面试必备八股文——性能优化
179 0
面试了个阿里P7大佬,他让我见识到什么才是“精通高并发与调优”
金九银十已经过去了,公司招聘也渐渐脱离了高峰期,在这忙里偷闲时刻聊聊在面试时遇到的一位大佬; 始末 按照公司项目招聘的要求,我通常都会问一些高并发需要掌握的知识和实战路程,主要考察一下有没有做过高并发项目,有没有做过性能调优,清不清楚其中的细节,每个方案可能带来的副作用;基础扎实不扎实,比如:数据结构是否合理,算法是否高效,有没有从最根本的IO和计算两个维度去做细节优化;
如何回答性能优化的问题,才能打动阿里面试官?
阿里妹导读:日常工作中,我们多少都会遇到应用的性能问题。在阿里面试中,性能优化也是常被问到的题目,用来考察是否有实际的线上问题处理经验。面对这类问题,阿里工程师齐光给出了详细流程。来阿里面试前,先看看这篇文章哦。
21230 2
如何回答性能优化的问题,才能打动阿里面试官?
京东架构师呕心整理:jvm与性能调优有哪些核心技术知识点
相信很多人对于性能调优都不陌生,为了获得更好的系统性能,或者是为了满足不断增加的业务需求。都需要用到我们的性能调优。所以性能优化在面试中出现的频率特别高,这篇文章我主要给大家整理了大厂里面关于jvm和性能调优用到的一些核心技术知识点。
133 0
阿里研究员:测试稳定性三板斧,我怎么用?
如何治理测试稳定性问题?很多人会说:环境、流程管控、监控、工具化、加机器、专人负责、等等。这些都是对的。不过这些都是解决方案层面的,而不是方法论和理论体系层面的。今天,阿里研究员郑子颖来说说测试稳定性的三板斧。据说,阿里同学们都非常认同这三板斧,看完文章感觉很多做的事情有了理论基础。
2771 0