我想为网页进行测试加载。我想在多线程的python中做到这一点。 第一个POST请求将登录用户(设置cookie)。
然后我需要知道有多少用户可以同时执行相同的POST请求。 所以我正在考虑生成线程中的请求。
我有几个问题: 1.是否可以同时运行1000-1500个CPU请求?我的意思是不会让系统变慢,所以它不再可靠了吗? 2.带宽限制怎么样?该测试可靠的通道有多好?
托管测试站点的服务器是Amazon EC2脚本将从另一台服务器运行(亚马逊也是如此)。
谢谢!
答案 0 :(得分:6)
cPython在运行多个线程时不会从多个核心中获益。这意味着,基本上,你只有一个核心在做测试工作。
有专门的工具可以做你想做的事。我建议两个:
FunkLoad是一个功能和加载Web测试程序,用Python编写,其主要用例是:
Tsung是一个开源的多协议分布式负载测试工具
Tsung的目的是模拟 用户为了测试可伸缩性 和基于IP的性能 客户/服务器应用程序您可以 用它来做负荷和压力测试 你的服务器许多协议都有 已经实施和测试,它 可以很容易地扩展。 WebDAV,LDAP 和MySQL支持已添加 最近(实验性的)。
它可以分布在几个上 客户端机器并且能够 模拟成千上万的 虚拟用户同时(甚至 数百万,如果你有足够的硬件 ...)。
如果您决定编写自己的工具,您可能希望使用Python的multiprocessing module,因为它可以让您使用多个核心。您还应该查看Twisted因为它可以让您在有限数量的线程中轻松处理多个套接字。这比为每个套接字生成一个新线程要好得多。
您使用的是Amazon EC2,因此我建议您使用Tsung。您可以租用十几台多核服务器几个小时,并使用Tsung进行一些非常重的负载测试。它在这种配置下可以很好地扩展。
至于带宽,它通常不是问题,但它取决于应用程序。在执行负载测试时,您必须密切监视所有资源。
答案 1 :(得分:1)
变量太多了。 同时1000 ...没有。在同一秒......可能。带宽可能是瓶颈。这是通过实验最好地解决的问题。