我需要重现客户端-服务器异步通信(一堆 JavaScript AJAX 与 OData api)的问题,该问题似乎是由于服务器和/或网络连接减慢时计算中的某些竞争条件引起的。
现在,我拥有的测试环境是一台本地 Hyper-V 机器,因此一切都很顺利,速度很快……我需要它减速来验证它。
是否有任何已知的方法可以(基本上)使 LAN Hyper-V 机器表现得像通过爬行互联网连接到达的远程服务器?
答案1
我发现模拟糟糕的互联网连接的最佳方法是在服务器和我的测试 PC 之间放置一个 pfSense 路由器并设置限制器功能。 https://doc.pfsense.org/index.php/Traffic_Shaping_Guide#Limiter
这可以用来模拟慢速网络、延迟甚至引入数据包丢失,以查看您的应用程序如何对不利的网络条件做出反应。
pfsense 可以在 hyperv 虚拟机中运行。因此,您可以设置它,然后将 webserver 网络设置更改为位于 pfsense 后面。
如果您不喜欢 pfSense,您可以使用任何支持 Dummynet 的 BSD 发行版。http://cs.baylor.edu/~donahoo/tools/dummy/tutorial.htm
答案2
您无法降低客户虚拟机上的网络速度,但您可以将其放置在路由器后面,路由器将负责降低连接速度;该路由器可以是另一个具有两个网络接口的 WM,运行能够根据您的需要自定义网络带宽和延迟的工具。
有多种工具可以实现这一点,其中最通用、最容易设置和使用的工具之一是瓦内姆。
答案3
并非开箱即用。您也不需要机器速度更慢 - 您想要模拟 LAN 连接,即低带宽(在 Hyper-V 2012 R2 中可以实现)和延迟。延迟确实很难实现 - 我不知道有哪个软件可以做到这一点 - 因为这意味着缓冲所有数据包。
LAN 带宽很容易 - 通过具有 QOS 的功能强大的路由器(Mikrotik)运行它并使那里的带宽非常非常糟糕。