kong笔记——kong、nginx性能压测对比

简述

kong笔记 目录导航

前面介绍了kong的基本使用以及相关原理,那么接下来,我们需要对kong的性能做一个简单的了解。

性能压测

测试环境

机器类别及IP地址 硬件配置 操作系统 软件配置 网络环境
kong服务 1核2G/2核2G/2核4G/4核2G/4核4G Alpine Linux 3.13 kong:2.5.0 阿里云ack环境
测试机 CPU:4CPU8G
带宽:1M
资源组:1台4CPU8G,1台2CPU4G
VUM:100w
Euler OS系统 v1.19.10-r0 华为云 云性能测试服务CPTS

测试思路

  1. 压测 使用kong代理;
  2. 压测 使用kong代理并使用插件(file-log)的场景;
  3. 压nginx与kong的区别(其他变量一样);
  4. 压规格,看内存影响还是cpu影响,以及最后得出一个软件瓶颈的最佳规格(其他变量一样);
  5. 压并发数,看是否有影响,以及错误率,qps变化(其他变量一样);
  6. 压引入lua业务与没引入lua业务的场景,看业务对其影响大不大(其他变量一样);

测试结果

测试报告量巨大,为了看起来明了,这里只写了结论(数据量实在太多了,而且markdown对表格的支持不太好,显示效果也不好,这里仅放置模板)

模板

此处RPS可以理解为QPS;

场景分别为:

1核2G1M带宽1副本

1核2G1M带宽2副本

1核2G2M带宽1副本

1核4G1M带宽1副本

2核2G1M带宽1副本

2核4G1M带宽1副本

2核4G1M带宽2副本

等等

以下是表格模板:

kong笔记——kong、nginx性能压测对比_第1张图片

结论
  1. kong架构+lua业务+file-log插件:qps最高的配置规格为4核2G,qps大约在 9000左右波动;

  2. kong架构代理:qps最高的配置规格为4核2G**,qps大约在1.2w左右波动;

  3. nginx架构+lua业务+nginx反向代理:qps最高的配置规格为4核2G,qps大约在 1.3w左右波动;

    这里为什么加了一个nginx反向代理的条件,是因为你使用kong的时候,kong的内部实际上是对你的业务做了一个反向代理,所以为了保证变量一致,采用了nginx代理;

  4. nginx架构+lua业务:qps最高的配置规格为4核2G,qps大约在 3w左右波动;

  5. 两种框架压测时,qps跟cpu核数的提升成正比,与内存的影响较小。

场景

由以上结论可以得出:

  1. 如果直接访问 nginx(不存在nginx代理),4核2G情况下,qps是3w,直接访问kong(直接在nginx_kong.lua配置server访问),qps也是3w,两者相差不大,可以说几乎等同。

    但是如果按照这种方式使用kong的话,其实是违背了kong的初衷,这样的话需要你修改一些源码才能保证kong的生命周期,插件正常使用,并且还会带来额外的风险(比如kong已有的功能部分失效);

  2. 而使用代理的方式,也就是说代理接口的时候,kong 4核2G情况下qps只有1.2w(使用nginx做代理后,qps下降也会特别严重,比kong情况稍微好一些,但相差不大),再加一个插件时,qps又会更低。

这个结论是大量数据压测支撑出来的(购买的华为云 cpts服务,非本地jmeter压测,故可以排除因本地机器性能不足而导致的结果不准确),不是自己凭空捏造,因为数据量太大,粘贴出来的话,文章的可读性会变的很差;

所以由以上结论可以总结出以下场景:

  1. 如果仅仅想做个接口提供给对方,中间没有什么代理,直来直去没有其他功能的需求,并且又要求并发特别高,我建议你直接nginx;
  2. 如果你需要做接口代理,但又不需要什么权限啦,限流啦等功能,我还是建议你nginx;
  3. 如果你需要接口代理,并且需要开发权限功能,限流,日志等功能时,我建议你上kong,因为这些功能kong是做好的,我们可以直接拿来使用;

其实可以总结为一句话是,你需要代理接口,但是你又不想开发类似权限,限流,插件等功能时,而且也想动态配置路由直接生效,不需要重启服务时,并且你还想要一个可视化的页面配置时(要求不能在多啦!),就用kong,反之,nginx;

你可能感兴趣的:(kong,nginx,kong)