Proxy Protocol Performance Testing Comparison(yamux/smux/h2)

2025-03-19T14:56:00

测试环境

测试组件包括:请求发起端(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)。

{lamp/}

RTT 10ms

{lamp/}

RTT 100ms

{lamp/}

RTT 200ms

{lamp/}

RTT 500ms

前3000个请求是因为需要openstream导致的 建立了1000的并发建立了1000个stream,每个stream发送10个请求,去除建立stream的10ms rtt数据如下

{lamp/}

拉流传输性能

iperf3测试一分钟传输性能
每秒大概发送500MB数据测试传输数据

不同延时下载大文件
{lamp/}

h2

RTT/1G文件speedtime
<1ms223MB/s4.6s
100ms28.7MB/s54s
500ms6.32MB/s3m 8s

yamux

RTT/1G文件speedtime
<1ms144MB/s7.0s
100ms9.71MB/s1m 49s
500ms1.98MB/s8m 42s

tcp

RTT/1G文件speedtime
<1ms256MB/s4.1s
100ms29.1MB/s36s
500ms6.33MB/s2m 57s

结论:

随着代理组件(proxy client和proxy server)间的RTT增大,smux、http2的单个请求平均耗时差距小。
smux 在传输性能和最大带宽方面表现最佳,但其波动稍大于 h2。
h2 在传输稳定性方面表现最佳,其平均带宽和最大带宽也很高。
yamux 的平均带宽和稳定性较差,可能不太适合高性能要求的场景。

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »