性能调优怎么做,看过这一篇,菜鸟变大佬! -威尼斯人2299

测试分享评论2字数 2119阅读7分3秒阅读模式
摘要

如果说需求、开发、db、运维、测试是单一一门学科,那么性能就是综合学科,它包含了需求分析、db、开发、测试、运维的所有学科。

在展开今天的内容之前,我们先来看一下,是不是任何一个测试都可以学习性能测试。文章源自玩技e族-https://www.playezu.com/369588.html

如果说需求、开发、db、运维、测试是单一一门学科,那么性能就是综合学科,它包含了需求分析、db、开发、测试、运维的所有学科。文章源自玩技e族-https://www.playezu.com/369588.html

所以说,学习性能测试,你前期需要懂的是需求分析、db设计、程序开发、自动化测试、运维。文章源自玩技e族-https://www.playezu.com/369588.html

所以今天的内容是性能分析的一大重点,也是一大难点!文章源自玩技e族-https://www.playezu.com/369588.html

webserver服务优化文章源自玩技e族-https://www.playezu.com/369588.html

对于web服务性能优化的方向,一般是:文章源自玩技e族-https://www.playezu.com/369588.html

页面静态化:比如访问的页面,先进行静态化后提供访问,减少db负担;文章源自玩技e族-https://www.playezu.com/369588.html

减少页面的size:文章源自玩技e族-https://www.playezu.com/369588.html

减少尺寸、css合并、js精简等;文章源自玩技e族-https://www.playezu.com/369588.html

客户端缓冲、样式等;文章源自玩技e族-https://www.playezu.com/369588.html

去掉无用请求与数据;文章源自玩技e族-https://www.playezu.com/369588.html

对数据做异步处理(非常关键);文章源自玩技e族-https://www.playezu.com/369588.html

只能dns及cdn加速,让响应数据离用户更近,规避缓解网络瓶颈。文章源自玩技e族-https://www.playezu.com/369588.html

程序优化文章源自玩技e族-https://www.playezu.com/369588.html

程序优化是治本的方法,也是我们大部分来解决性能问题的一个措施。文章源自玩技e族-https://www.playezu.com/369588.html

当前性能测试大部分都是在sit(集成测试)测试完成后再进行的,如果出现严重性能问题、修改代码等代价太大,这不是熬几个通宵的事情,有可能看不到第二天的太阳。文章源自玩技e族-https://www.playezu.com/369588.html

所以为了规避这种问题,所以我们要提前做打算,这就体现了一个测试架构师的重要性。文章源自玩技e族-https://www.playezu.com/369588.html

顺序是:先架构后程序(即先整体后个体)。文章源自玩技e族-https://www.playezu.com/369588.html

系统架构的选择文章源自玩技e族-https://www.playezu.com/369588.html

例如:ssh(struts、spring、hibernate)架构,应该是在当下最流行的mvc模型,ssh为我们提供了明晰的层次结构,各层协同完成业务实现,即简化了设计过程,也加快了程序交付进程。文章源自玩技e族-https://www.playezu.com/369588.html

凡事有好的一面,必定有短板:如大型的业务系统,如果我们把大量的数据从数据库取出来,然后利用程序进行分析计算。文章源自玩技e族-https://www.playezu.com/369588.html

不过,有没有想到会增加网络传输,而且在程序中进行处理有可能并不是最佳威尼斯人2299的解决方案。想想,如果把这些大数据量放在数据库计算,是不是就非常的轻松 愉快呢~文章源自玩技e族-https://www.playezu.com/369588.html

所以,老话说得好,任何事情都要量力而行。选择相对来说最优的方案,就是最佳方案!文章源自玩技e族-https://www.playezu.com/369588.html

程序优化文章源自玩技e族-https://www.playezu.com/369588.html

低效代码优化,不包含系统架构,就是纯粹的业务逻辑及算法低效。文章源自玩技e族-https://www.playezu.com/369588.html

如:逻辑混乱、调用继承不合理、内存泄露等,有问题,咱就得有对策,解决方法:文章源自玩技e族-https://www.playezu.com/369588.html

表单压缩文章源自玩技e族-https://www.playezu.com/369588.html

减少网络传输量。文章源自玩技e族-https://www.playezu.com/369588.html

局部刷新文章源自玩技e族-https://www.playezu.com/369588.html

页面中采取局部内容获取方式,减少向服务器请求次数。文章源自玩技e族-https://www.playezu.com/369588.html

仅取所需文章源自玩技e族-https://www.playezu.com/369588.html

只向服务器请求必要内容,只向客户端发送必要表单。文章源自玩技e族-https://www.playezu.com/369588.html

逻辑清晰文章源自玩技e族-https://www.playezu.com/369588.html

不做错误及多余调用,资源请求后能释放。文章源自玩技e族-https://www.playezu.com/369588.html

谨慎继承文章源自玩技e族-https://www.playezu.com/369588.html

对系统架构了解,特别是一些基础类,公共组件,合理利用。文章源自玩技e族-https://www.playezu.com/369588.html

程序算法优化文章源自玩技e族-https://www.playezu.com/369588.html

试着分析程序,是否需要用算法来提高程序效率(如果不会算法,那就别勉强了)。文章源自玩技e族-https://www.playezu.com/369588.html

批处理文章源自玩技e族-https://www.playezu.com/369588.html

对大量的数据处理,最好能做成批处理:好处那是大大的。文章源自玩技e族-https://www.playezu.com/369588.html

延迟加载文章源自玩技e族-https://www.playezu.com/369588.html

大对象的展示,可以做延迟加载的方式,层层递进显示明细。文章源自玩技e族-https://www.playezu.com/369588.html

防止内存泄露文章源自玩技e族-https://www.playezu.com/369588.html

内存泄露,是由于对象无法回收造成的,特别需要注意的是长生命周期的对象。文章源自玩技e族-https://www.playezu.com/369588.html

减少大对象使用文章源自玩技e族-https://www.playezu.com/369588.html

防止在程序中声明及实例化大对象,不能为了方便而设计出大对象。大对象太大,小体格的吃不消。文章源自玩技e族-https://www.playezu.com/369588.html

防止争用死锁文章源自玩技e族-https://www.playezu.com/369588.html

一般出现在线程同步的场景。文章源自玩技e族-https://www.playezu.com/369588.html

索引文章源自玩技e族-https://www.playezu.com/369588.html

编写合理的sql,尽量利用索引。文章源自玩技e族-https://www.playezu.com/369588.html

存储过程文章源自玩技e族-https://www.playezu.com/369588.html

为了减少数据传输到应用层面,一般会在数据库层面利用存储过程来完成数据逻辑的运算,只需要回传少量的结果给应用层。文章源自玩技e族-https://www.playezu.com/369588.html

内存分配文章源自玩技e族-https://www.playezu.com/369588.html

合理分配数据库内存,如pga与sga设置;不对大数据提供orderby操作,避免pga被占满。文章源自玩技e族-https://www.playezu.com/369588.html

并行文章源自玩技e族-https://www.playezu.com/369588.html

使用多线程或线程来处理任务。文章源自玩技e族-https://www.playezu.com/369588.html

异步文章源自玩技e族-https://www.playezu.com/369588.html

如用mq(消息中间件)来解耦系统之间的依赖关系,减少阻塞。文章源自玩技e族-https://www.playezu.com/369588.html

使用设计好的模式来优化程序文章源自玩技e族-https://www.playezu.com/369588.html

选择合适的io模式文章源自玩技e族-https://www.playezu.com/369588.html

如nio、aio等。文章源自玩技e族-https://www.playezu.com/369588.html

配置优化文章源自玩技e族-https://www.playezu.com/369588.html

这作为一个老码农,应该非常准确闪现出jvm、连接池、缓存机制、cdn等优化手段。文章源自玩技e族-https://www.playezu.com/369588.html

jvm配置优化文章源自玩技e族-https://www.playezu.com/369588.html

合理分配堆与非堆的内存,配置适合的内存回收算法,提高系统服务能力。文章源自玩技e族-https://www.playezu.com/369588.html

连接池文章源自玩技e族-https://www.playezu.com/369588.html

数据库连接池可以节省建立链接与关闭链接的资源消耗。文章源自玩技e族-https://www.playezu.com/369588.html

线程池文章源自玩技e族-https://www.playezu.com/369588.html

通过缓存线程的状态来减少新建线程与关闭线程的开销,一般都是中间件进行配置,如在tomcat的server.xml文件中。文章源自玩技e族-https://www.playezu.com/369588.html

缓存机制文章源自玩技e族-https://www.playezu.com/369588.html

通过数据的缓存来减少磁盘读写的压力,缩小存储与cpu的效率差。文章源自玩技e族-https://www.playezu.com/369588.html

数据库连接池优化文章源自玩技e族-https://www.playezu.com/369588.html

数据库连接池存在的意义就是让链接复用。通过建立一个数据库连接池(缓冲区)以及一套链接使用、分配、管理策略,使得该连接池中的链接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。文章源自玩技e族-https://www.playezu.com/369588.html

以上没有唠到重点,我们无非关注这三点:文章源自玩技e族-https://www.playezu.com/369588.html

连接池的参数配置;文章源自玩技e族-https://www.playezu.com/369588.html

连接池配置多少合适:文章源自玩技e族-https://www.playezu.com/369588.html

按需分配,够用就行!小窍门:一般情况数据库连接池的数量<中间件线程池的链接数量;文章源自玩技e族-https://www.playezu.com/369588.html

监控连接池。文章源自玩技e族-https://www.playezu.com/369588.html

db优化文章源自玩技e族-https://www.playezu.com/369588.html

db的优化思路就是一少三减:文章源自玩技e族-https://www.playezu.com/369588.html

少做文章源自玩技e族-https://www.playezu.com/369588.html

减少请求次数文章源自玩技e族-https://www.playezu.com/369588.html

减少数据传输量文章源自玩技e族-https://www.playezu.com/369588.html

减少运算量(查询、排序、统计)文章源自玩技e族-https://www.playezu.com/369588.html

业务流程优化文章源自玩技e族-https://www.playezu.com/369588.html

架构的好坏直接影响到整个系统的运行,所以,一个好的架构师,是一个系统的基石。文章源自玩技e族-https://www.playezu.com/369588.html

这种架构优化留给架构师吧,不然他们干啥~文章源自玩技e族-https://www.playezu.com/369588.html

结构优化文章源自玩技e族-https://www.playezu.com/369588.html

结构优化就好比我们人类进化是一样一样的。由最开始的单机结构已经无法满足日渐增长的业务量,所以架构的演变就这样开始了:单机结构→集群结构→分布式结构。文章源自玩技e族-https://www.playezu.com/369588.html

下面我们就来瞅瞅,这些结构的构成图。文章源自玩技e族-https://www.playezu.com/369588.html

单机结构:文章源自玩技e族-https://www.playezu.com/369588.html

文章源自玩技e族-https://www.playezu.com/369588.html

集群结构:文章源自玩技e族-https://www.playezu.com/369588.html

文章源自玩技e族-https://www.playezu.com/369588.html

分布式结构:

文章源自玩技e族-https://www.playezu.com/369588.html

调优,是一个复杂学科,没有学霸的智商,得有学渣不要脸的劲,才能成为一个性能专家。文章源自玩技e族-https://www.playezu.com/369588.html

切记,团队的支持,是最重要的,切勿单打独斗,因为你是斗不过的……文章源自玩技e族-https://www.playezu.com/369588.html

归根结底,我们分析调优为了啥,就是在客户发送请求的时候,我们以最快的速度响应给客户。文章源自玩技e族-https://www.playezu.com/369588.html

注意:本文法律责任由该作者承担,侵权请联系▷诈骗举报◁▷新闻不符◁▷我要投稿◁
免责声明:本文内容来自用户上传并发布或网络新闻客户端自媒体,玩技博客仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系删除。

发表评论

匿名网友
确定