假设一个企业准备发布新的电子商务网站,硬软件的设备与设施都已绪。这个网站看上去非常漂亮,所有的链接和图片都正确无误,但真正的问题是:它的后台服务在访问高峰时是否顶得住?为了回答这个重要的问题,需要做严格的负荷测试。
网站的负荷测试目的
为了能预测和防止系统瘫痪和不可接受的服务迟缓,英特尔开发了自己的严格的负荷测试程序,针对五项关键目标:
确定一个应用能够支持的并发用户数和交易数的上限。
证明一个应用能够承受期望的每小时/每天的并发用户数和交易数。
证明一个应用和设施能够不停机运行(24×7模式)。
证明后台服务器能够承受期望的连接数。
证明单个的业务交易能够在合理的时间内完成。
网站负荷测试的6大测试程序
为了有效地评估五个目标,英特尔开发了包含六个关键测试的负荷测试程序,它们是:
脚本验证/数据完整性测试
单步测试
性能空间测试
持续测试
数据库连接测试
时间测试/业务实例
每个测试可看作是对相互关联的系统和服务的行为与性能的深入观察。根据完成全面测试所需的时间,公司将能预料到困难,使网站在极端的负荷下维持可接受的服务水平。
1、脚本验证/数据完整性测试
脚本验证测试的主要目的是保证测试是按照设计的要求进行的。除了证实所记录的测试步骤可以无错误地重复外,还要进行手工检验数据并在后台进行数据完整性测试。
一旦设计完成,将负荷测试计划记入一个脚本,先运行这个脚本并确认它是按要求运行的,然后检查后台服务器上记录的日志。要查看互联网服务器日志,性能监督日志、以及所有用来运行脚本的工具日志。当脚本在某个表中输入了一些东西,为了确认已经正确地输入数据库中了,需要对数据库进行查询。还要注意检查是否有请求失败、超时或通讯出错。除了检验脚本是被正确地执行外,该测试对确定运行脚本时产生的瓶颈和错误位置非常有用。
2、单步测试
单步测试用来确定服务器允许的大并发用户数和交易数。该测试模拟不断增加并发用户数和交易数直至系统崩溃。一旦脚本设计好以后,第一次运行脚本应该反映期望的未来六个月内的负载情况。这是所谓的“1X负荷”。
从1X负荷开始,增加到2X、4X,依此类推。随着这种指数的增长,到达某一点时,后台服务器的记录会显示系统已经不能承受了。其症状是:互联网服务器的缓存命中率大增,互联网服务器的处理器占用率达到峰值,ASP日志记录的错误和连接中断不断增加。
3、性能空间测试
因为一周内对服务器的访问是不可能均匀分布的,还需利用性能空间测试来确定一个应用和系统在不同寻常的大访问量时能够维持期望的交易量。
该测试让公司测量长时间的高访问量下服务器的负荷、性能、内存的使用情况和应用软件的稳定性。还可以确定是否具有满足未来客户需求的合适的应用软件架构和基础设施。
4、持续测试
运行持续测试将证明应用在实际环境下能够持续工作。
持续测试的结果可看出应用和设施在短期及长期的支持能力。它还有助于预示客户在公司网站上的感受。通过长时间的运行,该测试有助于发现小的、逐渐积累的问题,使公司能够在它们变成大问题之前将问题解决。
5、数据库连接测试
数据库连接测试确定数据库服务器是否能够支持期望的连接数。通过模拟期望的用户并发连接和交易量,测量服务器的负荷、性能、内存使用情况和应用软件的稳定性。该测试的结果将确定数据库服务器能够持续处理的负荷的上限,ASP连接池是否正确工作,以及还有什么措施来优化数据库的性能。
6、时间测试/业务实例
时间测试/业务实例测试用来确定单个业务交易能够在合理的时间内完成。这需要企业其它部门和IT合作测试的例子,它是连接IT和业务的桥梁。运行这个测试将记录下平均完成每个交易所需的时间,从0负荷、平均负荷到突发重负荷和重负荷。
7、网站负荷测试的两点局限
负荷测试方法和工具在过去的一年得到了很大的进步,然而,仍然存在一些需要指出的局限。当进行负荷测试时,已经建立了一个模型代表将来对服务器的要求,它根据公司对用户在网站上的行为估计而定。
虽然与互联网的连接因调制解调器的速度、局域网连接和网络延迟而不同,但在测试模型中,所有虚拟用户都与互联网完美地连接:很高的带宽和低的网络延迟。因此,除非这些变化能够在测试中进行模拟,否则这些模型对终用户的感受的预测是有局限的。要实现真实世界的测试条件的佳方法是建立与访问者有效的反馈。这样可以收集到用户的看法而不是测得的因特网性能,从而修改设施来满足用户的要求。