前一篇「在 AWS 上面的 OpenVPN Server 效能」最後的問題就是 EC2 instance 本身的網路效能,畢竟是公司要用的,還是實際測一下數字,之後有人接手的時候也比較清楚是怎麼選這個大小的...
這邊拿的是 AWS 的 ap-southeast-1
(Singapore) 的 EC2 測試,直接在同一個 subnet 裡面開兩台一樣的機器跑 iperf 測試。
機器開機後會先跑這串指令 (除了安裝 iperf 的指令,其他的是出自我自己 wiki 上的 Ubuntu 這頁),然後再重開機:
sudo fallocate -l 512M /swapfile; sudo chmod 600 /swapfile; sudo mkswap /swapfile; sudo swapon /swapfile; echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab; echo -e "net.core.default_qdisc=fq\nnet.ipv4.tcp_congestion_control=bbr" | sudo tee /etc/sysctl.d/99-tcp.conf; sudo sysctl -p /etc/sysctl.d/99-tcp.conf; sudo apt update; sudo apt dist-upgrade -y; sudo apt install -y apache2-utils apt-transport-https build-essential curl dnsutils dstat git jq locales moreutils most mtr-tiny net-tools p7zip-full pigz prometheus-node-exporter rsync sharutils software-properties-common sysstat unrar unzip vim-nox wget zsh zsh-syntax-highlighting zstd; sudo apt install -y iperf; sudo apt clean
接下來就是一台跑 iperf -s
,另外一台跑 iperf -c 10.x.x.x -i 1 -t 3600
讓他跑一個小時看結果了。
我都有跑 tmux 再連到這些機器上,這樣可以捲回去看每一秒的傳輸速度,就可以看出來變化了,不過這邊還是簡單的只列出最高速度 (burstable) 與穩定輸出的速度 (baseline):
EC2 instance |
Baseline |
Burstable |
vCPU |
RAM |
Pricing (USD$) |
c6g.medium |
500Mbps |
10Gbps |
1 |
2GB |
0.0392 |
c6g.large |
750Mbps |
5Gbps (claimed 10Gbps) |
2 |
4GB |
0.0784 |
c6g.xlarge |
1.25Gbps |
10Gbps |
4 |
8GB |
0.1568 |
t4g.small |
125Mbps |
5Gbps |
2 |
2GB |
0.0212 |
t4g.medium |
255Mbps |
5Gbps |
2 |
4GB |
0.0424 |
t4g.large |
510Mbps |
5Gbps |
2 |
8GB |
0.0848 |
t4g.xlarge |
1Gbps |
5Gbps |
4 |
16GB |
0.1696 |
這邊沒列出來的是 burstable 可以持續的時間,但這跟你機器吃的網路資源有關,我就決定只用 baseline 來做決策了,這樣可能會多花一點錢,但會少很多麻煩。
另外這次在處理的過程有被同事提醒各種 bandwidth overhead,所以就順便查了一下資料:
綜合這些測試,我自己抓了 35% 的 overhead 來推估,最後是用 c6g.large
來養 VPN server。750Mbps 的實際流量大約可以包進 550Mbps 的原始流量,大約是 68MB/sec。
不過新加坡與印尼之間的 internet bandwidth 好像還是不太夠,有時候深夜跑也跑不滿... 不過之後 VPN 上的 client 會愈來愈多,應該是不需要降...