Answers:
如果您正在运行Windows,Fiddler是一个很好的工具。它具有模拟调制解调器速度的设置,对于想要更多控制的人来说,有一个插件可以为每个请求增加延迟。
我更喜欢使用这样的工具在我的应用程序中放置等待时间代码,因为这是更现实的模拟,并且不让我设计或编写实际位。最好的代码是我不必编写的代码。
新增:Pavel Donchev在Software Technologies上的博客上的这篇文章展示了如何创建自定义的模拟速度:使用Fiddler限制Internet连接速度。
从Chrome 38开始,您无需任何插件即可执行此操作。只需单击检查元素(或F12热键),然后单击“切换设备模块” ,您将看到类似以下内容:
它具有许多其他功能,可让您模拟特定的Internet连接(3G,GPRS)
PS,适合尝试限制上传速度的用户。可悲的是,目前无法实现。
PS2现在您无需切换任何内容。可以从网络面板上直接使用节流面板。
请注意,在单击“ 不限制”时,您可以创建自定义限制选项。
我使用的是http://www.netlimiter.com/,效果很好。不仅限制了单个进程的速度,而且还显示了实际的传输速率。
那里有TCP代理,例如iprelay和Sloppy,它们进行带宽整形以模拟慢速连接。您还可以使用ipfw和iptables等IP过滤工具进行带宽整形并模拟数据包丢失。
您可以使用NetEm(网络仿真)作为代理服务器来仿真许多网络特征(速度,延迟,数据包丢失等)。它使用iproute2软件包控制网络连接,并且已在大多数Linux发行版的内核中启用。
它由tc
命令行应用程序控制(来自iproute2软件包),但也有一些用于NetEm的Web界面GUI,例如PHPnetemGUI2。
优点是,正如我所写,它不仅可以模拟不同的网络速度,而且还可以模拟例如数据包丢失,重复和/或损坏,随机或定义的延迟等,因此您可以模拟各种性能较差的网络。
对于您的应用程序来说,它是绝对透明的,您可以配置操作系统以使用NetEm代理服务器,因此来自该计算机的所有连接都将通过NetEm。或者,您可以仅配置应用程序以将其用作代理。
我一直在用它来测试各种模拟的性能较差的网络上的Android应用程序的性能。
从10.10开始的Mac OSX拥有一个名为Murus Firewall的应用程序,该应用程序充当pf(ipfw的替代品)的GUI。
它对于系统范围或特定于域的节流非常有效。我只是可以使用它在300Kbps和30Mbps之间滑动下载速度,以测试流式视频播放器的调整方式。
还有另一个名为WIPFW的工具- http://wipfw.sourceforge.net/
它有点老,但是您可以使用它来模拟较慢的连接。它是基于Windows的,例如,该工具允许管理员监视路由器从特定计算机上接收的流量或转发的WWW流量。
对于Linux,以下文件列表可能会有用:
就个人而言,虽然Dummynet很好,但我发现NetEm在我的用例中是最通用的。我通常对延迟的影响感兴趣,而不是对带宽的影响(即WiFi连接问题)感兴趣,而且它非常容易模拟随机数据包丢失/损坏等。它也很容易访问且免费(与基于硬件的Linktropy不同))。
附带说明一下,对于Windows,Clumsy非常棒。我还想补充一点,(关于网站)浏览器限制不是模拟现实生活中网络问题的准确方法(我认为“ TKK”评论了上述原因中的一些原因)。
希望这对某人有帮助!
实际上,可以通过UNIX的双对socat
和cpipe
UNIX方式组装形成单个TCP连接的一种常见情况:
socat TCP-LISTEN:5555,reuseaddr,reuseport,fork SYSTEM:'cpipe -ngr -b 1 -s 10 | socat - "TCP:localhost:5000" | cpipe -ngr -b 1 -s 300'
这模拟约为300KB / s的带宽连接从您的服务:5000
,并以约10KB / S和侦听:5555
传入连接。注意:请注意,此每个连接,因此每个单独的TCP连接都会获得此数量。
说明:外部(左侧)作为分叉服务器socat
侦听给定选项:5555
。然后cpipe
,该SYSTEM:...
选项中的第一个命令将进入套接字:5555(并从第一个,外部出来socat
)的数据限制为最高10kByte / s。然后,该数据将使用另一个socat
连接到的数据进行转发localhost:5000
(您要放慢速度的服务应在此监听)。然后将来自的 数据localhost:5000
放入正确的cpipe
命令中,该命令(具有给定的值)会将其限制为大约300kB / s。
该选项-ngr
来cpipe
是很重要的。它使cpipe从其输入文件描述符中非贪婪地读取。否则,您可能会陷入缓冲区中的数据无法转发而等待答复的情况。
也可以使用更通用的buffer
工具代替cpipe
。
(信用:这是基于克里斯多夫·洛尔(Christophe Loor)从socat
文档中获得的“双发”配方)