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

2024-09-07 06:28

本文主要是介绍性能测试经典案例解析——政务查询系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

各位好,我是 

@道普云

一站式云测试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.chinasem.cn/article/1144311

相关文章

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Ubuntu系统怎么安装Warp? 新一代AI 终端神器安装使用方法

《Ubuntu系统怎么安装Warp?新一代AI终端神器安装使用方法》Warp是一款使用Rust开发的现代化AI终端工具,该怎么再Ubuntu系统中安装使用呢?下面我们就来看看详细教程... Warp Terminal 是一款使用 Rust 开发的现代化「AI 终端」工具。最初它只支持 MACOS,但在 20

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Debian如何查看系统版本? 7种轻松查看Debian版本信息的实用方法

《Debian如何查看系统版本?7种轻松查看Debian版本信息的实用方法》Debian是一个广泛使用的Linux发行版,用户有时需要查看其版本信息以进行系统管理、故障排除或兼容性检查,在Debia... 作为最受欢迎的 linux 发行版之一,Debian 的版本信息在日常使用和系统维护中起着至关重要的作

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五