做者:荣滨,酷划在线后端架构师,关注微服务治理,容器化技术,Service Mesh等技术领域git
Pepper Metrics是我与同事开发的一个开源工具(github.com/zrbcool/pep…),其经过收集jedis/mybatis/httpservlet/dubbo/motan的运行性能统计,并暴露成prometheus等主流时序数据库兼容数据,经过grafana展现趋势。其插件化的架构也很是方便使用者扩展并集成其余开源组件。
请你们给个star,同时欢迎你们成为开发者提交PR一块儿完善项目。github
酷划在线成立于2014年,是国内激励广告行业的领军者。酷划致力于打造一个用户、广告主、平台三方双赢的激励广告生态体系,旗下产品“酷划锁屏”“淘新闻”分别为锁屏、资讯行业的领跑者。数据库
伴随着公司服务端架构向微服务演进的过程当中,服务增多,运维成本提升,资源利用率低,等问题日益凸显,目前公司服务器规模超过700+台ECS,服务数量1000+,随着容器化技术的成熟,计划在近期大规模将生产环境迁移到阿里云容器服务平台上,但因为VxLan等主机转发模式的Overlay网络均有必定的性能损耗,因此咱们将目光瞄准阿里云容器服务平台开源的terway网络插件,指望使用可以动态绑定弹性网卡的容器服务达到ECS的网络性能,进而对terway网络性能进行详细的评估。后端
本测试基于阿里云容器服务Kubernetes版(1.12.6-aliyun.1),Kubernetes集群使用阿里云控制台建立,测试分两部分:服务器
本测试的全部网络流量均为跨节点通讯(容器分布在不一样的宿主机节点上) 本测试的全部测试均穿插测试超过3组取结果平均值网络
吞吐量,PPS测试使用iperf3 版本信息以下:mybatis
iperf 3.6 (cJSON 1.5.2)
Linux iperf3-terway-57b5fd565-bwc28 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64
Optional features available: CPU affinity setting, TCP congestion algorithm setting, sendfile / zerocopy, socket pacing
复制代码
测试机命令:架构
# 启动服务器模式,暴露在端口16000,每1秒输出一次统计数据
iperf3 -s -i 1 -p 16000
复制代码
陪练机命令:运维
# 测试吞吐量
# 客户端模式,默认使用tcp通讯,目标机为172.16.13.218,持续时间45,-P参数指定网卡队列数为4(跟测试的机型有关),目标端口16000
iperf3 -c 172.16.13.218 -t 45 -P 4 -p 16000
# 测试PPS
# 客户端模式,使用udp发包,包大小为16字节,持续时间45秒,-A指定CPU亲和性绑定到第0个CPU
iperf3 -u -l 16 -b 100m -t 45 -c 172.16.13.218 -i 1 -p 16000 -A 0
# 测试延迟
# ping目标机30次
ping -c 30 172.16.13.218
复制代码
测试机型选用ecs.sn1ne.2xlarge,规格详情以下 socket
说明:纵轴表达流量流出方向,横轴表达流量流入方向,因此组合状况一共有9种
测试机型选用ecs.sn1ne.8xlarge,规格详情以下
说明:纵轴表达流量流出方向,横轴表达流量流入方向,因此组合状况一共有9种
名词解释:
terway的网络性能测试中表现出了与宣传一致的性能,经过与做者的沟通中了解到,因为将弹性网卡直接放入POD的namespace内,虽然网卡驱动的中断依然由宿主机内核完成,可是网络包不会出如今宿主机namespace的网络栈,减小了宿主机的一层cni网桥转发及复杂路由的性能损失,这也是为何在某些场景下超过宿主机网络栈性能的表现。