Python脚本负载测试网页

时间:2010-11-14 21:46:01

标签: python multithreading load-testing

我想为网页进行测试加载。我想在多线程的python中做到这一点。 第一个POST请求将登录用户(设置cookie)。

然后我需要知道有多少用户可以同时执行相同的POST请求。 所以我正在考虑生成线程中的请求。

我有几个问题: 1.是否可以同时运行1000-1500个CPU请求?我的意思是不会让系统变慢,所以它不再可靠了吗? 2.带宽限制怎么样?该测试可靠的通道有多好?

托管测试站点的服务器是Amazon EC2脚本将从另一台服务器运行(亚马逊也是如此)。

谢谢!

2 个答案:

答案 0 :(得分:6)

cPython在运行多个线程时不会从多个核心中获益。这意味着,基本上,你只有一个核心在做测试工作。

有专门的工具可以做你想做的事。我建议两个:

FunkLoad是一个功能和加载Web测试程序,用Python编写,其主要用例是:

  • Web项目的功能测试,以及回归测试。
  • 性能测试:通过加载Web应用程序和监视 您的服务器可帮助您查明瓶颈,并提供详细信息 绩效评估报告。
  • 加载测试工具以暴露粗略测试中未出现的错误, 比如体积测试或长寿测试。
  • 压力测试工具以压倒Web应用程序资源并进行测试 应用程序可恢复性。
  • 通过编写任何Web重复性任务的脚本来编写Web代理,例如检查是否 一个网站还活着。

Tsung是一个开源的多协议分布式负载测试工具

  

Tsung的目的是模拟   用户为了测试可伸缩性   和基于IP的性能   客户/服务器应用程序您可以   用它来做负荷和压力测试   你的服务器许多协议都有   已经实施和测试,它   可以很容易地扩展。 WebDAV,LDAP   和MySQL支持已添加   最近(实验性的)。

     

它可以分布在几个上   客户端机器并且能够   模拟成千上万的   虚拟用户同时(甚至   数百万,如果你有足够的硬件   ...)。


如果您决定编写自己的工具,您可能希望使用Python的multiprocessing module,因为它可以让您使用多个核心。您还应该查看Twisted因为它可以让您在有限数量的线程中轻松处理多个套接字。这比为每个套接字生成一个新线程要好得多。

您使用的是Amazon EC2,因此我建议您使用Tsung。您可以租用十几台多核服务器几个小时,并使用Tsung进行一些非常重的负载测试。它在这种配置下可以很好地扩展。

至于带宽,它通常不是问题,但它取决于应用程序。在执行负载测试时,您必须密切监视所有资源。

答案 1 :(得分:1)

变量太多了。 同时1000 ...没有。在同一秒......可能。带宽可能是瓶颈。这是通过实验最好地解决的问题。