我在 Azure 上创建了两个虚拟机,一个位于澳大利亚东部,另一个位于巴西南部。这两个虚拟机都是经典型号,运行的是 Ubuntu 16.04。我在这些虚拟机上创建了端点,并在这些虚拟机上运行了一个服务器-客户端程序(使用 C++)。我发现延迟非常高。传输 2MB 大约需要 4 秒。我需要应用程序的延迟非常低(传输 2 MB 的时间少于 0.1-0.2 秒)。我该如何实现(或接近)?有没有办法优先处理我的网络流量?有没有办法在 Azure 上购买更多带宽?有没有办法删除 Azure 上的防火墙,从而减少延迟?
答案1
有没有办法在 Azure 上购买更多带宽?
您的虚拟机大小是多少?增加虚拟机大小可以增加虚拟机的带宽。您可以用它iperf3
来测试虚拟机之间的带宽。这是我的结果。我的虚拟机是 A0 大小。
root@shui:~# iperf3 -c 40.126.252.224
Connecting to host 40.126.252.224, port 5201
[ 4] local 10.0.0.4 port 37260 connected to 40.126.252.224 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 360 KBytes 2.95 Mbits/sec 0 55.8 KBytes
[ 4] 1.00-2.18 sec 487 KBytes 3.39 Mbits/sec 0 123 KBytes
[ 4] 2.18-3.00 sec 1.41 MBytes 14.3 Mbits/sec 0 266 KBytes
[ 4] 3.00-4.00 sec 1.17 MBytes 9.83 Mbits/sec 1 282 KBytes
[ 4] 4.00-5.00 sec 600 KBytes 4.91 Mbits/sec 0 283 KBytes
[ 4] 5.00-6.00 sec 1.17 MBytes 9.83 Mbits/sec 0 291 KBytes
[ 4] 6.00-7.18 sec 660 KBytes 4.57 Mbits/sec 0 300 KBytes
[ 4] 7.18-8.00 sec 1.35 MBytes 13.8 Mbits/sec 0 336 KBytes
[ 4] 8.00-9.00 sec 720 KBytes 5.89 Mbits/sec 0 379 KBytes
[ 4] 9.00-10.00 sec 1.70 MBytes 14.2 Mbits/sec 0 442 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 9.55 MBytes 8.01 Mbits/sec 1 sender
[ 4] 0.00-10.00 sec 7.96 MBytes 6.67 Mbits/sec receiver
我在我的实验室中进行测试,iperf3
已在 Azure Ubuntu 16.04 上安装。测试方法。
在一个虚拟机上以服务器模式运行 iperf,您应该在端点上打开端口 5201。
$ iperf3 -s
在另一台虚拟机上运行单线程测试:
$ iperf3 -c ip-of-server
对于多线程测试:
$ iperf3 -c ip-of-server -P n
其中 n = VM 中的核心数
更多测试结果可以参考这里博客。
有没有什么办法可以对我的网络流量进行优先排序?
据我所知,您可以根据以下三个方面对您的网络进行优先排序。
1.选择合适的虚拟机大小
您可以在实验室中测试虚拟机带宽并选择合适的虚拟机大小。您可以参考此链接:高性能计算 Linux VM 大小。
2.优化你的代码和算法。