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很大的结论,人力资源系统性能的测试和研究在之后的历程中,任务将会更加艰巨,咱们彻底有信心克服困难,打败困难,由于咱们已经积累了不少经验。 数据库