温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

性能调优的方法有哪些

发布时间:2021-10-15 14:55:34 来源:亿速云 阅读:108 作者:iii 栏目:编程语言

本篇内容介绍了“性能调优的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.性能测试是什么

性能测试就是通过特定的方式,对被测系统按照一定的测试策略施加压力,获取该系统的响应时间、吞吐量、资源利用率等性能指标,来检验系统上线后能否满足用户需求的过程,主要包括测试需求/目的、测试环境/工具、测试方案、测试执行、测试结果与分析。

2.衡量系统的四大指标

衡量一个系统的性能,主要有以下四大指标:

响应时间

指应用执行一个操作所需的时间,包括从发出请求开始到最后收到响应所需要的时间。响应时间是系统最重要的性能指标,直观的反映了系统的快慢。

吞吐量

指单位时间内系统处理的请求数,体现系统的整体处理能力。TPS(Transaction per second)是吞吐量的一个常用量化指标,此外还有HPS(Hits per second)、QPS(Query per second)等。

资源利用率

指应用服务器、数据库服务器及被测系统包含的中间件服务器的CPU、内存、磁盘、网络等系统资源的使用情况。

并发数

指的是同时提交请求的用户数目。这四个指标之间的关系如图1。

性能调优的方法有哪些

图2

一个请求从发出到接收响应,如图2所示。大致流程如下:

  1. 客户端发送请求报文。客户端发送请求报文,经过网络传输后到达服务端;

  2. 服务端处理。服务端接收到请求报文后,进行业务逻辑处理和必要的数据读写操作;

  3. 服务端返回响应报文。服务端处理完后,将响应报文发送到客户端。

我们通常说的响应时间是第1步、第2步、第3步消耗的总时间。第1步主要是客户端请求耗时和网络耗时;第2步主要是业务逻辑、数据读写和网络耗时;第3步主要是客户端渲染和网络耗时。

第1、2、3步每一步都有可能存在性能问题,导致响应时间变长。第1步中如客户端主机配置低,反应慢等,第二步中如业务线程阻塞、数据库查询慢;第3步中如网络传输延迟。根据各种问题的类型,我们又可以把问题归为硬件问题、网络问题、代码问题、中间件问题等。不同问题也有不同的调优方法,下面我们简单聊一聊性能调优。

4.抓住时间的小偷-性能调优

常用的调优方法有:

  • 空间换时间。如数据缓存,提前从磁盘上读取数据缓存到内存中,CPU请求数据直接从内存中获取,从而达到更高的效率;

  • 时间换空间,如上传大附件,将数据分批次处理,用更少的空间完成任务处理;

  • 分而治之,把任务切分,分开执行,也方便并行执行来提高效率;

  • 异步处理,如互联网应用最常见的MQ消息队列,将业务链路上比较耗时的业务拆分出来,通过异步处理减少阻塞影响;

  • 并行,多个进程或者线程同时处理业务,缩短业务处理时间;

  • 离用户更近一点,如CDN技术,把用户请求的静态资源放在离用户更近的地方;

  • 一切可扩展,业务模块化、服务化(同时无状态化)、良好的水平扩展能力。

下面我们举几个案例进行说明。

案例1

问题描述: 压测某接口时,随着压测执行,响应时间越来越长。

问题分析:

  1. 打印线程堆栈,对比线程堆栈信息,发现线程堆栈中FailoverEvent的线程数越来越多,最终内存溢出;

  2. 查看代码发现,程序中未判断FailoverEvent线程队列是否已经存在,导致FailoverEvent线程队列重复创建。

性能调优的方法有哪些

解决方案:调用下游服务改用多线程方式。

性能调优的方法有哪些

解决方案:去掉冗余调用,一次请求调用一次selectList方法。

性能调优的方法有哪些

解决方案 :将事务1拆分,先查询,然后根据查询的结果批量删除。

优化结果 :死锁问题解决。

调优建议

  1. 避免大事务;

  2. 按同一顺序访问数据对;

  3. 避免编写包含用户交互的事务;

  4. 酌情使用低隔离级别,如RC;

  5. 为表添加合理的索引,如果不走索引将会为表的每一行记录加锁,死锁的概率就会大大增大;

  6. 避免在同一时间点运行多个对同一表进行读写的脚本,特别注意加锁且操作数据量比较大的语句;

  7. 设置锁等待超时参数,innodb_lock_wait_timeout。

5.总结

响应时间通常只是问题的表现,根本原因在于各种资源的利用是否合理,这里的资源是指广义的资源,包括硬件/软件资源、系统/线程/数据等不同级别的资源。调优本身,就是对各种资源进行更合理的配置。调优的目的通常也是为了满足业务需求,因此我们不必追求过早和过度优化,并且我们应该认识到,性能调优不可能一劳永逸,随着业务的迭代,总会有新的问题出现,因此我们应该具备打持久战的共识和能力。

“性能调优的方法有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI