压测信息:
envoy版本: 1.23.2-dev
istio版本:1.15.2
envoy只打开了access log,没有配置任何VS和DR,去掉了jeager和stat-filter插件,流量通过iptables接管到envoy。
pod层面做的压测,资源为 1c2g的sidecar配比,业务容器是1c2g,响应比较快,request的大小是多少,response就返回多少。
网络是k8s的内网,延迟很低,不超过1ms。
压测准备:
构建 test1---->test2的链路,在test1的pod里面进行压测,访问的接口是test1的,这里的接口内部实现了调用test2的逻辑,也就是说:流量是下面这个样子 --流量--》test1---〉envoy-outbound----->envoy-inbound---->test2。
1.通过dd工具生成,5k,10k,20k ,50k,100k大小的文件 作为 流量request的body大小,下面是生成的一个例子:
# dd if=/dev/zero of=test-10k bs=10k count=1
1+0 records in
1+0 records out
10240 bytes (10 kB, 10 KiB) copied, 9.7164e-05 s, 105 MB/s
参考:
https://www.cnblogs.com/machangwei-8/p/10353628.html
2.压测工具使用的是hey,压测命令的例子如下:
# ./hey -n 20000 -c 2 -q 500 -D test-10k -m POST -H "Target-Name: test2.xxx.xxx.cluster.local" http://xx.xx.xx.xx:8080/status/200
Summary:
Total: 20.0433 secs
Slowest: 0.0140 secs
Fastest: 0.0007 secs
Average: 0.0010 secs
Requests/sec: 997.8397
Total data: 737280000 bytes
Size/request: 36864 bytes
......
Latency distribution:
10% in 0.0008 secs
25% in 0.0009 secs
50% in 0.0010 secs
75% in 0.0011 secs
90% in 0.0012 secs
95% in 0.0013 secs
99% in 0.0016 secs
......
Status code distribution:
[200] 20000 responses
参考:
https://www.cnblogs.com/wintersun/p/12492096.html
压测结果:
场景一:downstream(mesh接管) --→upstream(mesh不接管接管)
活跃链接数 request body大小 耗时增加
1~20 0~20KB 1.5~3ms
50KB 2~4ms
100KB 3~6ms
30 0~10KB 2~4ms
20~50KB 3~8ms
100KB 8~10ms
40 0~20KB 4~7ms
50KB 6~9ms
100KB 7~12ms
50 0~20KB 4~8ms
50KB 8~11ms
100KB 8~16ms
100 0~10KB 9~17ms
20KB 14~20ms
50KB 18~28ms
100KB 20~40ms
场景二:downstream(mesh接管) --→upstream(mesh接管)
活跃链接数 request body大小 耗时增加
10 0~20KB 2ms
50KB 3ms
100KB 3.5ms
20 0~20KB 3ms
50KB 4~10ms
100KB 6~13ms
30 0~20KB 4~6ms
50KB 6~15ms
100KB 8~20ms
40 0~20KB 4~6ms
50KB 6~15ms
100KB 8~20ms
50 0~10KB 4~10ms
20KB 6~12ms
50KB 8~12ms
100KB 10~16ms
100 0~10KB 10~20ms
20KB 14~20ms
50KB 18~30ms
100KB 20~40ms