性能测试案例:数据库cpu高导致响应时间长

Posted hopeiscoming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能测试案例:数据库cpu高导致响应时间长相关的知识,希望对你有一定的参考价值。

前几天在用jmeter做性能测试的时候,遇到一个响应时间长的性能问题,简单总结一下,分享给大家,希望能给大家在性能测试过程中类似问题提供一个性能问题分析定位的思路。

现象如下图,响应时间很长,达到了18秒左右,tps也只有20技术图片

        监控:

根据经验,直奔oracle数据库服务器,top命令一看,负载高,用户cpu将近100%,cpu已经达到性能瓶颈了,shift+p,或者键盘大写状态下按P,将所有进程按cpu使用率从高到低排序,这样,我们关注消耗cpu最多的进程即可

技术图片

        分析定位:

直接选取上图第一个进程ID27087,通过下面的sql在plsql中查询(注意:连接oracle数据库的用户需要有v$process、v$session、v$sql这3张表的权限,如果没有,向DBA申请即可,下面sql的含义:通过pid,在v$process中找到paddr,通过paddr在v$session中找到sql_id,通过sql_id在v$sql中找到对应的sql)
技术图片查出来一条结果技术图片

点击下面

技术图片

可以看到完整的sql语句,是一个多表关联查询语句,它很耗数据库cpu,顺其自然的想到去看下表的索引

技术图片

查看表,发现where后条件字段不是索引字段

技术图片

        调优总结:

编辑表,果断把该字段加为索引字段,重新压测,数据库服务器基本上就没啥负载了,且cpu基本都是空闲状态技术图片

响应时间也只有几十毫秒了

技术图片

tps从20左右提升到300多,可以说性能提升是相当的明显 

技术图片

总结:sql一直占用cpu切片时间,其它线程就只能等待,服务器负载高,所以响应时间就长了。

 

文章转自:https://mp.weixin.qq.com/s?__biz=MzIxMzMxMDcwNA==&mid=2247484089&idx=1&sn=35de1f750c5a8e42f12e48a8535b3963&source=41#wechat_redirect

以上是关于性能测试案例:数据库cpu高导致响应时间长的主要内容,如果未能解决你的问题,请参考以下文章

性能测试学习第十天-----性能案例分析之数据库性能问题

性能分析- Java 进程导致 CPU 使用率升高,问题怎么定位?

java中高并发和高响应解决方法

性能测试准备

Jprofiler 监控cpu过高或者响应时间过长

JVM 关于-XX:-TieredCompilation 的案例 导致CPU异常高