2010-11-14 46 views
4

我想为网页做一个测试加载。我想在多线程的Python中做到这一点。 首次POST请求会登录用户(设置cookie)。Python脚本加载测试网页

然后,我需要知道有多少用户同时做同样的POST请求可以采取服务器。 所以我在考虑产生循环中请求的线程。

我有几个问题:1。 是否可以运行1000 - 同时CPU明智1500请求?我的意思是它不会减慢系统的速度,因此它不再可靠吗? 2.带宽限制如何?该测试通道应该有多可靠?在其试验场托管

服务器是亚马逊EC2脚本会从另一台服务器上运行(亚马逊也是如此)。

谢谢!

回答

5

cPython在运行多线程时没有利用多核心。这意味着,基本上,你将只有一个核心从事测试工作。

有专门的工具来做你想做的事情。让我建议二:

FunkLoad是一个功能和负载测试网页,用Python编写的,其主要的使用情况是:Web项目的

  • 功能测试,从而回归测试也是如此。
  • 性能测试:通过加载网络应用程序并监控您的服务器,它可以帮助您找出瓶颈,并提供详细的性能测量报告 。
  • 负载测试工具,以暴露不粗略测试面, 如音量测试或测试长寿错误。
  • 压力测试工具,以压倒Web应用程序资源和测试 应用程序的可恢复性。
  • 脚本通过任何Web重复性的任务,如检查是否 网站是活的编写web代理。

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

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

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


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

您与Amazon EC2合作,所以我会推荐使用Tsung。您可以租用十几个多核服务器几个小时,然后用Tsung运行一些真正的重负载测试。它在这种配置中非常好地伸缩。

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

+0

感谢您的回答! 宗似乎做所有我想要的东西:) – Leonti 2010-11-16 23:11:47

1

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