2017-07-26 123 views
1

的数千我想与数百个测试的上传服务,如果不是数千, HTTPS连接 同时。 我想有很多,比如3G质量的连接, ,每个节点都有低带宽和高延迟,每个发送几兆字节的数据直到服务器, 导致大量的并发的长期请求由服务器处理。负载测试连接速度慢

有许多负载生成工具可以生成数千个同时发生的请求。 (我目前使用Locust,主要是让我可以 优势,用Python写的我现有的客户端库。) 这类工具通常通过共享网络链路尽可能快地 运行每个并发请求。

有多种方式来调整表观带宽和TCP连接的延迟, 如Linux的TC 和方便的包装像Comcast

据我所知,TC和类似控制共享链接 ,但他们不能限制个人请求。 如果你想限制一个请求,TC运作良好。 从理论上讲,与众多客户共​​享相同的节流网络链接, 每个请求可以运行连续, 受约束的带宽, 而不是大量的请求在同一时间同时执行, 了几包。 前者会导致服务器上并发执行 的活动请求少得多。

我怀疑我想要的工具必须主动管理每个客户端的发送和接收,以公平地遏制它们。 有没有这样的工具?

回答

1

您可以在Apache JMeter看一看,它可以“节流”连接的吞吐量通过下列属性配置:

httpclient.socket.http.cps=0 
httpclient.socket.https.cps=0 

属性可以在user.properties定义要么文件或传递到通过-J command-line argument

cps代表character per second JMeter的,所以你可以JMeter的线程(虚拟用户)“减速”给定的吞吐速率,为cps计算公式为:

cps = (target bandwidth in kbps * 1024)/8 

查看How to Simulate Different Network Speeds in Your JMeter Load Test了解更多信息。

1

是的,这些是网络模拟器。一个非常原始的是以WanEM的形式。它不会涵盖您的测试需求。您需要类似于Shunra Storm这样的硬件设备,该设备可以管理与来自野外的3,4,5g连接有关的Ookla模型(认为speedtest.com)中的个人连接和损坏。那么,也许我应该说,“可以管理”,因为惠普收购Shunra后此产品一直缺席。

Ixia,Agilent,PacketStorm,Spirent等公司在网络方面还有一些其他的市场竞争对手。他们都不便宜,但我看到你的需要。缓慢且特别脏的连接像手机一样,对堆栈造成不成比例的影响,并且可能导致服务器资源耗尽,移动连接数量少于台式机。

在附注中,请确保您的测试代码中包含思考时间的代表性模型。如果您将客户机 - 服务器模型折叠为没有或极其有限的思考时间&损害网络,只会发生不好的事情。这会对测试的可预测性和可重复性造成特别的破坏。您也可能会结束追逐几十个与您的代码加载有关的工程幽灵,这些幽灵在生产中不会发生,因为在客户端请求之间的这些活动窗口期间会出现自然延迟和资源释放。