当前位置: 首页 > article >正文

性能测试经典案例解析——政务查询系统

各位好,我是 

@道普云

一站式云测试SaaS平台。一个在软件测试道路上不断折腾十余年的萌新。

欢迎关注我的主页

@道普云

文章内容具有一定门槛,建议先赞再收藏慢慢学习,有不懂的问题欢迎私聊我。

希望这篇文章对想提高软件测试水平的你有所帮助。


政务查询系统的用户量相对来说是比较小的,但是它的复杂性和对实时性的要求是比较高的,我们以一个主要提供单位信息业务复杂查询功能的系统为例。

在测试过程中主要发现某查询业务在生产环境响应时间过长,超过20秒,但是在测试环境响应时间却较快,只有3秒左右。相关数据表也已经建立了索引。而且生产环境配置比测试环境高,按理说生产环境配置更高它应该更快。针对这个问题,我们要找出为什么在生产环境中慢?

接下来我们就通过时间分布分析、环境差异分析、数据库监控分析、SQL执行分析这几个方面去进行分析。

时间分布分析

业务响应时间主要消耗在SQL执行时间。

生产环境SQL执行时间在26秒。

测试环境SQL执行时间在3秒以内。

环境监控比对分析

生产环境数据量59万,使用CentOS、Oracle 12c Rac,硬件配置较高。

测试环境数据量176万,使用Windows server 2016、Oracle 12c 单节点,硬件配置较低。

服务器资源在正常范围内。

数据库监控分析(AWR)

Oracle实例处理器、内存资源指标正常。

Oracle实例中没有明显的等待事件。

存在问题的SQL语句执行计划COST在生产环境、测试环境存在巨大差异。

SQL语句执行分析(1)

SQL语句执行分析(2)

生产环境SQL语句中排序相关操作由于没有经过索引,造成IO过高。

Oracle实例中排序相关参数Sort_Area_Size、workarea_size_policy配置存在问题。

通过去除SQL语句中的排序操作,SQL执行时间大幅度提升。

通过性能问题综合分析我们得到的诊断结果是:定位索引失效原因。

通过与开发、运维人员沟通,了解到该表是通过数据迁移在生产环境进行创建。

在数据迁移过程中,表的rowid发生变化,造成索引失效。

解决方法:

通过新建表空间重新导入数据表、重建索引解决。

Alter index index_name rebuild tablespace tbs_name;

Alter index pk_name rebuild tablespace tbs_name;


http://www.kler.cn/a/300136.html

相关文章:

  • Arweave的出块原理
  • 以Python构建ONE FACE管理界面:从基础至进阶的实战探索
  • 基于tldextract提取URL里的子域名、主域名、顶级域
  • MFC 使用 32位带Alpha通道的位图
  • 前端开发Web
  • 代码随想录算法【Day27】
  • k8s的应用
  • 基于Ant-Design-Vue设计的配置化表单
  • curl和ping
  • 【leetcode C++】 动态规划
  • lamp的脚本部署
  • 【CAPL实战】解决调用LIN函数不生效问题
  • [笔记]电参数测量的现有方案
  • Cesium 展示——视角漫游飞行效果
  • Linux系统本地化部署Dify并安装Ollama运行llava大语言模型详细教程
  • uniapp和vue3中使用vConsole在H5中开启移动端调试
  • R语言论文插图模板第9期—滑珠散点图
  • 一文彻底了解DNS协议工作原理,恐怕没有比这更通俗易懂的了吧?
  • HAProxy--高性能反向代理
  • MySQL 数据库:原理、应用与发展
  • 【CanMV K230 AI视觉】人脸姿态(脸部朝向)
  • Unity Hub自动安装指定版本Unity的Android开发环境
  • 【机器学习】生成对抗网络(Generative Adversarial Networks, GANs)详解
  • 14.2 k8s中我们都需要监控哪些组件
  • 结构型设计模式-外观(facade)模式 - python实现
  • js逆向基础10面向对象继承2