我想测试上传服务有数百个,如果不是数千个, 同时慢 HTTPS连接。 我想有很多,比如3G质量的连接, 每个都受到低带宽和高延迟的限制, 每个向服务器发送几兆字节的数据, 导致服务器处理大量并发的长期请求。
有许多负载生成工具可以生成数千个并发请求。 (我目前正在使用Locust,主要是因为我可以参加 用Python编写的现有客户端库的优点。) 这些工具通常尽可能快地运行每个并发请求 通过共享网络链接。
有多种方法可以调整TCP连接的明显带宽和延迟, 比如Linux TC 和Comcast等方便的包装。
据我所知,TC等控制共享链接 但他们不能限制个别请求。 如果您想限制一个请求,TC运行良好。 从理论上讲,许多客户共享相同的节流网络链接, 每个请求都可以串行运行, 受限于带宽, 而不是同时执行大量请求, 一次几个包。 前者会导致执行的活动请求少得多 同时在服务器上。
我怀疑我想要的工具必须主动管理每个客户的发送 接受公平地扼杀他们。 有这样的工具吗?
答案 0 :(得分:1)
您可以查看Apache JMeter,它可以通过以下属性“限制”与吞吐量的连接:
httpclient.socket.http.cps=0
httpclient.socket.https.cps=0
可以在 user.properties 文件中定义属性,也可以通过-J command-line argument
将属性传递给JMeter cps
代表character per second
,因此您可以将JMeter线程(虚拟用户)“减速”到给定的吞吐率,cps
计算的公式为:
cps = (target bandwidth in kbps * 1024) / 8
查看How to Simulate Different Network Speeds in Your JMeter Load Test了解详情。
答案 1 :(得分:1)
是的,这些是网络模拟器。一个非常原始的是WanEM的形式。它不会满足您的测试需求。您将需要类似于Shunra Storm的东西,这是一种硬件设备,可以通过与来自野外的3,4,5g连接相关的Ookla(think speedtest.com)衍生的模型来管理个人连接和损伤。好吧,也许我应该说,“可以管理”,因为自惠普收购Shunra以来,该产品一直缺席。
Ixia,Agilent,PacketStorm,思博伦等公司在网络方面还有其他一些市场竞争对手。它们都不便宜,但我看到了你的需求。缓慢,尤其是脏连接,如手机,对堆栈产生不成比例的影响,并且可能导致服务器耗尽资源,移动连接数量少于桌面移动连接。
另一方面,请确保在测试代码中包含思考时间的代表模型。如果您在没有或极其有限的思考时间的情况下折叠客户端 - 服务器模型。损害网络只会发生坏事。这将对您的测试具有可预测性和可重复性的特殊破坏。您也可能最终追逐几十个与代码中的加载相关的工程鬼,因为在客户端请求之间的活动窗口期间会发生自然延迟和资源释放,因此生产中不会出现这些鬼。