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

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

如果说 需求,开发,DB,运维,测试 是单一一门学科,
那么 性能 就是综合学科,
它包含了 需求分析,DB,开发,测试 ,运维的所有学科,
所以说,学习性能测试,你前期需要懂得是需求分析,DB设计,程序开发,自动化测试、运维。

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

老话说得好,要想不努力,就得有前提~~
月薪三千的,可能开保时捷
月薪一万的,可能开速腾
月薪三万的,可能开迈腾
月薪十万的,可能开辉腾

不管怎么折腾… 有资本,才是最重要的~~
在这里插入图片描述

小屌丝看不下去了,
对小鱼说: 鱼叔,能不能别扯了,开整行不行~~
小鱼:阔以~

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

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的性能优化,这一篇就够

业务流程优化

架构的好坏,直接影响到整个系统的运行,所以,一个好的架构师,是一个系统的基石。
这种架构优化,留给架构师吧,不然他们干啥嘞~~

结构优化

结构优化就好比我们人类进化是一样一样的。
由最开始的单机结构 已经无法满足日渐增长的业务量,所以 架构的演变就这样开始了:
单机结构集群结构分布式结构

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

在这里插入图片描述

集群结构
在这里插入图片描述

分布式结构
在这里插入图片描述

小屌丝: 看了这些,终于明白了,原来性能分析调优,需要这么多啊, 我一直以为遇到性能问题,直接让码农搬搬砖 就行了
在这里插入图片描述
小鱼:小屌丝,你这危险的思想,白富美知道吗??
小屌丝: 鱼叔, 别说了, 我在捋捋,这些内容,有点剌嗓子!
小鱼:这又不是玉米饼子,至于吗! 再说了,想想你的白富美,想想你的人生巅峰,看看你那屌丝样!!!
小屌丝: 鱼叔,啥也别说了, 我弄还不行吗!


调优,是一个复杂学科, 没有学霸的智商,得有学渣不要脸的劲,才能成为一个性能砖家
切记,团队的支持,是最重要的,切勿单打独斗,因为你是斗不过的…
.
归根结底,我们分析,调优为了啥, 就是在客户发送请求的时候,我们以最快的速度响应给客户

所以,性能,是一门学科,也是一门学问,更是一门艺术。
我们要做的,就是分析她,理解她,爱护她,最后给整的服服帖帖。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wuyoudeyuer/article/details/106230214
今日推荐