环境说明:
操作系统: ubuntu 22.04
内核版本: 5.15.0-119-generic
系统架构: x86_64
软件版本: 开源版本 5.8.9
测试工具: eMQTT-Bench:latest
采取以下两种方案进行10/s限速测试:
- 方案一: 测试秒级限速准确率, 创建客户端间隔50ms,即每秒20个连接,总计20个客户端
- 方案二: 测试长时间限速准确率,创建客户端间隔50ms,即每秒20个连接,总计400个客户端
测试结果: - 方案一: 15~17个客户端连接成功.
- 方案二: 204个客户端成功连接.
测试过程中第一秒客户端连接数和限速存在加大的差异.
以下为测试日志:
ubt@abc:/tmp/emqx-bench/bin$ ./emqtt_bench conn --prefix=bench_sub_$RANDOM_$N --ssl=true -c 20 -i 50
Start with 8 workers, addrs pool size: 1 and req interval: 400 ms
client(8): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.17>,tls_connection,
undefined},
[<0.224.0>,<0.219.0>]}}
client(14): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.20>,tls_connection,undefined},
[<0.223.0>,<0.218.0>]}}
client(8): EXIT for {shutdown,ssl_closed}
client(14): EXIT for {shutdown,ssl_closed}
1s connect_succ total=15 rate=14.97/sec
1s connect_fail total=2 rate=2.00/sec
2s connect_succ total=17 rate=2.00/sec
3s connect_succ total=18 rate=1.00/sec
^C
ubt@abc:/tmp/emqx-bench/bin$
ubt@abc:/tmp/emqx-bench/bin$
ubt@abc:/tmp/emqx-bench/bin$ ./emqtt_bench conn --prefix=bench_sub_$RANDOM_$N --ssl=true -c 400 -i 50
Start with 8 workers, addrs pool size: 1 and req interval: 400 ms
client(152): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.14>,tls_connection,undefined},
[<0.231.0>,<0.216.0>]}}
...
client(353): EXIT for {shutdown,ssl_closed}
1s connect_succ total=17 rate=16.97/sec
1s connect_fail total=7 rate=6.99/sec
client(4): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.31>,tls_connection,
undefined},
[<0.313.0>,<0.310.0>]}}
...
client(155): EXIT for {shutdown,ssl_closed}
2s connect_succ total=25 rate=8.00/sec
2s connect_fail total=15 rate=8.00/sec
client(206): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.50>,tls_connection,undefined},
[<0.421.0>,<0.413.0>]}}
...
client(108): EXIT for {shutdown,ssl_closed}
3s connect_succ total=37 rate=12.00/sec
3s connect_fail total=27 rate=12.00/sec
client(359): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.69>,tls_connection,undefined},
[<0.558.0>,<0.550.0>]}}
...
client(60): EXIT for {shutdown,ssl_closed}
4s connect_succ total=45 rate=8.00/sec
4s connect_fail total=35 rate=8.00/sec
client(211): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.91>,tls_connection,undefined},
[<0.663.0>,<0.661.0>]}}
...
client(163): EXIT for {shutdown,ssl_closed}
5s connect_succ total=57 rate=12.00/sec
5s connect_fail total=47 rate=12.00/sec
client(114): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.112>,tls_connection,undefined},
[<0.803.0>,<0.794.0>]}}
...
client(215): EXIT for {shutdown,ssl_closed}
6s connect_succ total=65 rate=8.00/sec
6s connect_fail total=55 rate=8.00/sec
client(366): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.125>,tls_connection,undefined},
[<0.875.0>,<0.874.0>]}}
...
client(318): EXIT for {shutdown,ssl_closed}
7s connect_succ total=76 rate=11.00/sec
7s connect_fail total=68 rate=13.00/sec
client(369): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.149>,tls_connection,undefined},
[<0.1027.0>,<0.1020.0>]}}
...
client(320): EXIT for {shutdown,ssl_closed}
8s connect_succ total=84 rate=8.00/sec
8s connect_fail total=76 rate=8.00/sec
client(371): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.165>,tls_connection,undefined},
[<0.1130.0>,<0.1123.0>]}}
...
client(273): EXIT for {shutdown,ssl_closed}
9s connect_succ total=96 rate=12.00/sec
9s connect_fail total=88 rate=12.00/sec
client(274): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.194>,tls_connection,undefined},
[<0.1281.0>,<0.1273.0>]}}
...
client(325): EXIT for {shutdown,ssl_closed}
10s connect_succ total=104 rate=8.00/sec
10s connect_fail total=96 rate=8.00/sec
client(276): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.209>,tls_connection,undefined},
[<0.1380.0>,<0.1375.0>]}}
...
client(128): EXIT for {shutdown,ssl_closed}
11s connect_succ total=116 rate=12.00/sec
11s connect_fail total=108 rate=12.00/sec
client(129): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.235>,tls_connection,undefined},
[<0.1519.0>,<0.1515.0>]}}
...
client(80): EXIT for {shutdown,ssl_closed}
12s connect_succ total=124 rate=8.00/sec
12s connect_fail total=116 rate=8.00/sec
client(31): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.246>,tls_connection,undefined},
[<0.1614.0>,<0.1606.0>]}}
...
client(83): EXIT for {shutdown,ssl_closed}
13s connect_succ total=136 rate=12.00/sec
13s connect_fail total=128 rate=12.00/sec
client(134): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.273>,tls_connection,undefined},
[<0.1767.0>,<0.1765.0>]}}
...
client(85): EXIT for {shutdown,ssl_closed}
14s connect_succ total=144 rate=8.00/sec
14s connect_fail total=136 rate=8.00/sec
client(336): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.291>,tls_connection,undefined},
[<0.1859.0>,<0.1857.0>]}}
...
client(188): EXIT for {shutdown,ssl_closed}
15s connect_succ total=156 rate=12.00/sec
15s connect_fail total=148 rate=12.00/sec
client(339): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.316>,tls_connection,undefined},
[<0.2003.0>,<0.1994.0>]}}
...
client(90): EXIT for {shutdown,ssl_closed}
16s connect_succ total=164 rate=8.00/sec
16s connect_fail total=156 rate=8.00/sec
client(391): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.325>,tls_connection,undefined},
[<0.2089.0>,<0.2081.0>]}}
...
client(243): EXIT for {shutdown,ssl_closed}
17s connect_succ total=176 rate=12.00/sec
17s connect_fail total=168 rate=12.00/sec
client(144): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.351>,tls_connection,undefined},
[<0.2245.0>,<0.2240.0>]}}
...
client(195): EXIT for {shutdown,ssl_closed}
18s connect_succ total=184 rate=8.00/sec
18s connect_fail total=176 rate=8.00/sec
client(246): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.369>,tls_connection,undefined},
[<0.2331.0>,<0.2326.0>]}}
...
client(398): EXIT for {shutdown,ssl_closed}
19s connect_succ total=196 rate=12.00/sec
19s connect_fail total=188 rate=12.00/sec
client(249): connect error - {ssl_closed,
{sslsocket,
{gen_tcp,#Port<0.394>,tls_connection,undefined},
[<0.2484.0>,<0.2481.0>]}}
...
client(350): EXIT for {shutdown,ssl_closed}
20s connect_succ total=204 rate=8.00/sec
20s connect_fail total=196 rate=8.00/sec
日志中对部分报错日志进行裁剪,避免超出发帖限制