2011-11-09 29 views
4

我最近一直在想如何测试我们的web应用程序的性能之前,我们把他们住。我知道我们不能复制此测试的实际用户活动,因为它是新功能。我可以通过查看我们的日志来对用户活动进行一些猜测,并相应地创建测试,但我不知道这会实现什么。一个设计如何为网站加载测试?

我渴望知道一个人如何能:​​

  1. 确定负载和
  2. 确定行为

多远将这个让你在真实的场景比较?

回答

5

问题很大。我们一直在我的公司运行几年的基准测试和负载测试,主要基于HTTP。

在进入复杂场景之前,我们经常从基于的Apache Bench(与Apache捆绑的'ab'命令)的简单基准开始。这不是一个负载测试,而是一个性能测试,因为生成的客户端在继续进行下一个操作之前实际等待HTTP查询完成。基本思想是尝试'ab -c N -t 30',例如N = 1,2,4,8,50,100(例如)。您很快就会了解您应具有的可扩展性和最大吞吐量。

注意:运行测试服务器(最好在同一个LAN)附近的“AB”命令,否则你也替补网络(延迟是这里的主要问题)。但在一些商业案例中,这是整个系统(服务器+网络),这实际上是要测试的。从这里,如果结果看起来不错(即吞吐量扩展到服务器端的处理器数量,低或零错误率),我们继续进行负载测试。否则,我们寻找瓶颈,因为负载测试只会确认可扩展性问题一旦负载大于支持的吞吐量,最有可能显示可怕的结果(500内部错误,连接中断,大型管理器,服务器抖动的100%等)。

BTW,通过负载测试我的意思是使用可以申请任何负载的给定服务器/应用,尤其是服务器无法处理负载的工具(如:的JMeter,崇)。负载测试中有趣的是观察服务器过载时发生了什么。确定服务器可以处理的最大负载由您决定,当您选择性能不被认为可接受的确切测试点时。

然后,这是一个猜测或观察现有模式的问题。在很多情况下,我们被要求为新网站进行负载测试,显然没有发现真实的行为。否则,您可以使用分析并观察前十页:您的场景至少应该遍历它们。你会想一些导航路径,其中:

  • 显然到达主页
  • 使用搜索功能和弹跳从一个内容到另一个,也许随机
  • 进行登录,如果该功能存在
  • 更普遍exercice POST形式,负载测试,只能读取/ GET数据不是非常有意义的

其他提示:

  • 避免复杂性;例如,如果您有购物车,则不必通过付款等方式设置真实的购物场景。在电子商务商店中,购物车路径很少成为性能问题,95%的流量在别处(浏览产品等)。
  • 测试导航路径,然后在一个大的负载测试节日中堆积起来;他们应该事先单独提供好的结果
  • 最好是分开许多路径来真正实现缓存(总是有缓存:HTTP,应用程序,SQL,文件系统等);生成动态情景的工具,您可以在长列表中更改登录名或对象ID,这是必需的

总体思路是从简单测试开始逐步完成,否则您将很难解释结果如果他们不符合完美的可伸缩性曲线。你猜怎么着?他们从来不符合完美的可扩展性曲线...

0
  1. 这是由企业决定的。 About SLA它通常标记为“100%负载”。如果你想知道系统的稳定性,如果你想找到最大的系统性能,或者系统的负载高峰或者很长的100%的测试,测试也可以是200%或更多。
  2. 规则存在,告诉20%的所有操作需要80%的时间。使用用户统计信息确定所需的操作。其他情况再次由企业决定。用户活动可能会在时间(白天/夜晚,星期,月末等)中更改(一组操作),因此您必须创建不同的用户活动配置文件。