测试环境
测试组件包括:请求发起端(client)、请求接收端(server)和代理组件客户端(proxy client)和代理组件服务端(proxy server)。
测试目的:对比proxy client和proxy serve之间使用不同的协议对请求的影响。
将client -> proxy client和proxy server -> server之间的网络影响降至最低,所以测试时将client和proxy client放在同一台主机host1上,将proxy server和server放在同一台主机host2上。
两台4C8G的linux设备

测试结果
下面测试为proxy client 和 proxy server之间没有丢包的情况下,分别测试proxy client 和 proxy server之间的RTT为10ms、100ms、200ms、500ms情况下,四种协议的单个请求的平均耗时(总请求数量为10000)。
RTT 10ms

RTT 100ms

RTT 200ms

RTT 500ms

前3000个请求是因为需要openstream导致的 建立了1000的并发建立了1000个stream,每个stream发送10个请求,去除建立stream的10ms rtt数据如下
拉流传输性能
iperf3测试一分钟传输性能
每秒大概发送500MB数据测试传输数据
不同延时下载大文件
h2
| RTT/1G文件 | speed | time |
|---|---|---|
| <1ms | 223MB/s | 4.6s |
| 100ms | 28.7MB/s | 54s |
| 500ms | 6.32MB/s | 3m 8s |
yamux
| RTT/1G文件 | speed | time |
|---|---|---|
| <1ms | 144MB/s | 7.0s |
| 100ms | 9.71MB/s | 1m 49s |
| 500ms | 1.98MB/s | 8m 42s |
tcp
| RTT/1G文件 | speed | time |
|---|---|---|
| <1ms | 256MB/s | 4.1s |
| 100ms | 29.1MB/s | 36s |
| 500ms | 6.33MB/s | 2m 57s |
结论:
随着代理组件(proxy client和proxy server)间的RTT增大,smux、http2的单个请求平均耗时差距小。
smux 在传输性能和最大带宽方面表现最佳,但其波动稍大于 h2。
h2 在传输稳定性方面表现最佳,其平均带宽和最大带宽也很高。
yamux 的平均带宽和稳定性较差,可能不太适合高性能要求的场景。
评论 (0)