OpenAPI (Kong) Benchmark

简介:

测试用API基准性能测试

API编写

为了测试API Gateway的性能,我们首先要有一个测试用API。
用Go语言,采用基于fasthttp的iris框架,编写一个简单的HelloWorld Server。如下所示:

 
  1. package main
  2. import "github.com/kataras/iris"
  3. func main() {
  4. api := iris.New()
  5. api.Get("/hi", hi)
  6. api.Listen(":8080")
  7. }
  8. func hi(ctx *iris.Context){
  9. ctx.Write("Hi %s", "iris")
  10. }

测试API是否可用

 
  1. $ curl http://127.0.0.1:8080/hi
  2. Hi iris

Bench测试用API

 
  1. 并发 RPS TPR
  2. 1 21391.66 0.047
  3. 2 29864.03 0.067
  4. 3 63258.51 0.047
  5. 4 73325.61 0.055
  6. 5 80241.88 0.062
  7. 8 99025.29 0.081
  8. 10 105148.38 0.095
  9. 16 99378.09 0.161
  10. 20 99064.04 0.202
  11. 25 96601.46 0.259
  12. 30 94350.84 0.318
  13. 32 97307.03 0.329
  14. 40 93983.53 0.426
  15. 50 95480.85 0.524
  16. 64 94770.72 0.675
  17. 80 90437.65 0.885
  18. 100 93304.23 1.072
  19. 120 91837.84 1.307
  20. 128 91585.78 1.398
  21. 150 92307.99 1.625
  22. 180 92827.5 1.939
  23. 200 93157.63 2.147
  24. 500 93920.95 5.324
  25. 1000 90560.25 11.042
  26. 2000 73470.44 27.222
  27. 5000 72345.1 69.113
  28. 10000 70525.77 141.792

结论是,在合理的并发数下,QPS基本可以稳定在9W左右。最佳并发数为10。
对于测试,该API不可能成为瓶颈。

单实例API网关

注册为OpenAPI

 
  1. curl -X POST http://localhost:8888/apis/ \
  2. -d "name=overseas_index" \
  3. -d "upstream_url=http://10.182.20.100:8080/" \
  4. -d "request_path=/test" \
  5. -d "strip_request_path=true"
  6. {"upstream_url":"http:\/\/10.182.20.100:8080\/","request_path":"\/test","id":"36cc77c7-89cd-49d3-b153-e79c632ccc44","created_at":1471509004000,"preserve_host":false,"strip_request_path":true,"name":"overseas_index"}

测试OpenAPI连通情况

 
  1. $ curl http://127.0.0.1/test/hi
  2. Hi iris

从同机房通过API Gateway进行测试:

 
  1. c n rps tpr
  2. 50 100000 13780.78 3.628
  3. 100 100000 16499.59 6.061
  4. 200 100000 15778.13 12.676
  5. 500 100000 14109.51 35.437

使用OpenAPI,添加key-auth权限认证,ACL,从外网接口访问:

 
  1. c n rps tpr
  2. 50 100000 14006.29 3.570
  3. 100 100000 16087.16 6.216
  4. 200 100000 16033.10 12.474
  5. 500 100000 14080.34 35.511

(3 Nginx Node, 3x24 EchoServer)

在没有进行任何优化的条件下,峰值约16000 QPS。应对目前Cplus需求非常充裕。但对于DMP还需要进一步优化。优化空间很大。

目录
相关文章
|
SQL 数据采集 关系型数据库
大数据采集和抽取怎么做?这篇文章终于说明白了!
数据是数据中台\数据平台核心中的核心,因此数据汇聚必然是数据中台/平台的入口,本文详细讲述采集模块的方方面面、采集框架的使用选型以及企业真实落地
大数据采集和抽取怎么做?这篇文章终于说明白了!
|
6月前
|
JSON 运维 Ubuntu
在Docker上部署Ollama+AnythingLLM完成本地LLM Agent部署
通过以上步骤,您可以成功在Docker上部署Ollama和AnythingLLM,实现本地LLM Agent的功能。在部署过程中,确保环境和配置正确,以避免不必要的问题。希望本文能够帮助您顺利完成部署,并在本地环境中高效地使用LLM模型。
1746 8
|
人工智能 自然语言处理 PyTorch
从千问Agent看AI Agent——我们很强,但还有很长的路要走
本项目主要通过通义千问作为基础大模型,通义Agent浏览器助手实现网页和PDF材料,以帮助您快速了解多个页面的内容,总结您浏览过的内容,并减少繁琐的文字工作。实现数据分析与可视化、处理文件等的代码解释器功能。
从千问Agent看AI Agent——我们很强,但还有很长的路要走
|
Linux 测试技术
使用mdadm工具实现软RAID 5实战案例
文章详细介绍了如何使用mdadm工具在Linux系统中创建和管理软RAID 5设备,包括准备工作、创建RAID 5、格式化文件系统、挂载RAID设备、测试读写速度、备份配置信息、手动下线和添加设备以及禁用和启用RAID设备的完整过程。
745 0
使用mdadm工具实现软RAID 5实战案例
|
存储 Linux 文件存储
Linux使用Docker部署Traefik容器并实现远程访问管理界面-1
Linux使用Docker部署Traefik容器并实现远程访问管理界面
350 0
|
Docker 容器
查看docker容器使用的cpu和内存
查看docker容器使用的cpu和内存
2696 0
|
Linux 网络安全
NAT 技术与 Linux iptables
NAT 技术与 Linux iptables
360 0
|
监控 数据中心
|
JavaScript Ubuntu Java
零基础开发 nginx 模块
推荐学习资料: * nginx 开发指南: http://nginx.org/en/docs/dev/development_guide.html * nginx 动态模块编译博客文章: https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/ * nginx 源码: https://github.com/nginx
4969 1
|
监控 Shell Linux
systemd调试
systemd调试,参考https://freedesktop.org/wiki/Software/systemd/Debugging/
1914 0