热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

性能测试实战总结

1项目背景人力资源上线初期,由于全省40多个电业局临时决定同时集中使用人力资源系统,这是开发初期没有想到的事情,所以用户刚刚使用就反映整个

1项目背景
        人力资源上线初期,由于全省40多个电业局临时决定同时集中使用人力资源系统,这是开发初期没有想到的事情,所以用户刚刚使用就反映整个系统速度很慢,项目组和公司领导层高度重视这个事情,可是究竟慢在什么地方呢?是什么原因引起的慢,面对一个这么庞大而复杂的系统,要想找到真正的原因是很难办到的事情,大家都在怀疑和猜测着?是硬件问题?还是应用服务器慢?还是数据库服务器慢呢?围绕这一系列的疑问,性能测试工作紧张又有条不紊的展开了,而测试组担负着性能测试的主要重担,于是安排舒文林负责这个事情。

        2测试流程

        测试组接到任务过后,进行一系列的思考,确定了将整个系统逐步分解的测试办法,就是先将系统分成几个大块,应用服务器,数据库服务器,客户端程序;然后再将服务器拆成硬件和软件;然后逐步将应用软件划分成若干逻辑层,测试组舒文林经过和项目组沟通过后,首先找几个最慢的功能登陆,分页,人员子集编辑信息,组织机构查询。通过80人摸拟以上操作同时访问人力资源系统,在这样的情况下,我们发现压力主要集中在数据库服务器上,值得庆兴的是,通过观察应用服务器CPU,内存,磁盘,网络等资源,一切正常,所以我们排除了应用服务器引起慢的可能,把注意力集中在数据库服务器上。

        再观察数据库服务器时,我们发现CPU一直处于100%,磁盘I/O很慢,每秒在283K左右。于是直接想到的是换硬件,开发组决定更换磁盘阵列卡,将数据库服务器改成IBM的高档小型机。这样性能得到了一定的提升,但过了不久,用户又开始有意见了 ,那说明我们现在的系统性能还没有达到用户的要求,公司领导层再次组织进行性能测试,说的是一定要挖掘深层次的原因。

        于是测试组又派出了舒文林负责人力资源项目的性能测试,此时项目组要到了验收的时候了,这不免无形中给测试组增加了很大的压力, 这个时候Sybase工程师也来了,怎么办呢?还是老办法吧,不过这次我们是先从功能作为分解点,先找到最慢的功能,一个一个的测试/首先找到的是登陆,我们把登陆功能按照程序逻辑拆分成若干小的功能,及显示登陆页面,权限验证,加载主菜单、主画面等,结果发现登陆功能最慢的是加载主菜单和权限验证这两块,消耗了整个登陆功能大部份的时间,那就给开发人员找到了优化的地方,通过使用高速缓存,建立数据库索引,优化SQL,优化程序等技术手段过后,登陆功能性能提升了一半;最大支持用户数也由120增加到了200,接下来按照老办法,开始分页功能的测试,由于Sybase使用分页必须使用临时表,先将要分页的数据放到临时表,页面显示层再从临时表里面取出数据填充到客户端显示,


        还是先用80个用户同时使用该系统分页,并重复迭带多次,这个时候CPU长时间饱和,客户端时间很满,达到70秒,先记录作为基准测试。
        再看数据库的各种指标,我们发现数据库有严重的阻塞,终于有了根本性的发现。Sybase工程师想到通过绑定多个临时表,并通过ASE的同步机制来保持同步,这样阻塞问题缓解了,响应时间也由70秒降到了30秒。但是当用户数增加到120的时候,数据库CPU又是100%,系统又慢了下来,而且系统其它功能也都慢了下来,我们分析了一下,觉得通过增加多个临时表和多个临时库,这样会不会带来额外的CPU开销呢?肯定会的,但这个开销究竟有好大呢?这是一个还没有确定的问题?如果CPU开销小了,系统性能肯定会好起来,因为目前就CPU是个瓶劲。

        这个时候,Sybase工程师说他们已经做到最优化了,而开发人员也觉得他们该做的都做了,那为什么现在系统还慢呢?凭我的经验,我觉得这笔开销很大,但我又无法证明这一点,Sybase工程师承认这需要额外的CPU和内存开销,但究竟多大,也是一个疑问。为了弄清楚这个问题,我们选在在同一台计算机上将分页的功能做一个比较,我们抛开应用服务器,通过直接测试分页脚本,来比较各自的性能。采取在该服务器上全新安装操作系统和必要的软件,做成Ghost恢复文件。

        然后分别测试Sybase和Oracle,首先安装Sybase产品,进行测试后,然后用Ghost恢复系统到初始化环境,安装Oracle,采用和Sybase相同的测试案例进行测试, 并将oracle和Sybase调整到最优化,最后将两个测试结果汇总,测试过程忽略不计,结论是Sybase进行翻页CPU是100,而oracle是25%,Oracle分页由于有ROWNUM字段,所以不需要使用临时表,响应时间都在40秒左右,因为我们找的计算机很普通,所以时间长了点,所以我们得出Sybase使用临时表分页消耗CPU很大的结论,人力资源系统性能的测试和研究在以后的历程中,任务将会更加艰巨,我们完全有信心克服困难,战胜困难,因为我们已经积累了很多经验。 



推荐阅读
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了Redis中RDB文件和AOF文件的保存和还原机制。RDB文件用于保存和还原Redis服务器所有数据库中的键值对数据,SAVE命令和BGSAVE命令分别用于阻塞服务器和由子进程执行保存操作。同时执行SAVE命令和BGSAVE命令,以及同时执行两个BGSAVE命令都会产生竞争条件。服务器会保存所有用save选项设置的保存条件,当满足任意一个保存条件时,服务器会自动执行BGSAVE命令。此外,还介绍了RDB文件和AOF文件在操作方面的冲突以及同时执行大量磁盘写入操作的不良影响。 ... [详细]
  • 本文介绍了一个误删Oracle数据文件导致数据库无法打开的问题,并提供了解决方式。解决方式包括切换到mount状态、离线删除报错的数据文件等。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • soatest新建db工具,执行sql语句的步骤和注意事项
    本文介绍了在soatest中新建db工具并执行sql语句的步骤和注意事项,包括设置数据库连接参数、使用配置文件的方法编写sql查询语句、增加oracle驱动连接jar包、运行测试用例以及查看查询结果。详细说明了每个步骤的操作和相关注意事项。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
author-avatar
zxcvbnm89
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有