likes
comments
collection
share

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

作者站长头像
站长
· 阅读数 22

最近再看公司 网关的代码,11月末的最后一个周末 突然有了一些想法,就想把自己看看 能不能写一个简单的网关 测试下 性能(当然了 还有过滤器 那些东西,不过初期先不考虑)

别处看的

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

现在的几个网关

  1. nginx
  2. kong
  3. apinto

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

验证其性能

总不能你说什么是什么吧,我需要重复性的验证下,就向apiinto 要了一下性能测试

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

准备工作

wrk 和 网关 各使用一台机器 4c8G(按照你文档 配置环境)

apinfo 性能测试

你让我找一个4c8g的,对不起 我现在只有一个 2c 8g的 我先跑跑,之后再换,正好比较下 差2c 会差多少

发现 最近云服务器 不能访问github了,具体原因不知道,我是直接本地下载的包 和 gitee 下载的,我帮大家换下,方便大家测试

安装 apinfo

apinto_v0.8.4_linux_amd64.tar.gz 安装包

tar -zxvf apinto_v0.8.4_linux_amd64.tar.gz && cd apinto
cp config.yml.tmp config.yml
./apinto start

安装wrk

cd /root

sudo yum groupinstall 'Development Tools' -y

sudo yum install openssl-devel -y

sudo yum install git -y

git clone gitee.com/mirrors/wrk… wrk

cd wrk

make

把生成的 wrk 移到一个 PATH 目录下面, 比如

sudo cp wrk /usr/local/bin

验证

wrk -t16 -c100 -d30s -H "Connection:Close" --latency http://内网ip:9400

2c8g 测试结果

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

你告诉我100线程5w多,这结果3w左右,不对啊,不过我回去一看,他要求的

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

我靠 我怎么没看过这个 cpu,我先去百度云找下(我的服务器 在百度云)

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

我想根据 处理器找,我需要去找 实例规格

我们要找的测试服务器到底是什么呢?

cpuIntel(R) Xeon(R) Platinum 8369B CPU @ 270GHz*4
服务器操作系统Linux  内核版本:3.10.0-1160.36.2.el7.x86_64
----------------------------------------------

查看cpu

cat /proc/cpuinfo 

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

查看 linux 内核版本

cat /proc/version

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

百度云按照cpu找

cloud.baidu.com/doc/BCC/s/K…

查询 8369B 很可惜没有啊 走起 去阿里云看看

阿里云倒是有,但是 是 Intel Xeon(Ice Lake) Platinum 8369B

Xeon(Ice Lake) Xeon(R) 有什么区别?

其实就是 Intel(R) Xeon(R) Platinum 8369B 和 Intel Xeon(Ice Lake) Platinum 8369B的比较

英特尔Ice lake最突出的地方在于它10nm的生产工艺,其中[intel Xeon Gold 6346]就是英特尔发布的最具代表性的第三代智能可扩展处理器,其架构代号就是[Ice lake]。

百度的结果就是 Intel Xeon(Ice Lake) 比 Intel(R) Xeon(R) 好,行吧 找不到匹配的 用更好的也行

测试的机器选择

用 阿里云的

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

镜像 肯定要用公共的镜像,centos 7.9 走起

按需购买 走起,毕竟穷逼一个。。。。

正式测试 apinfo

100线程

29188.71

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

200线程

30415.19

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

1000线程

29254.27

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

小总结

这。。。不知道是不是我测试的方法不对,官方告诉6w多,我为什么只能到2w多

测试下 nginx

1.安装依赖包

//一键安装上面四个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2.下载并解压安装包

//创建一个文件夹
cd /usr/local
mkdir nginx
cd nginx
//下载tar包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.gz
3.安装nginx

//进入nginx目录
cd /usr/local/nginx
//进入目录
cd nginx-1.13.7
//执行命令 考虑到后续安装ssl证书 添加两个模块
./configure --with-http_stub_status_module --with-http_ssl_module
//执行make命令
make
//执行make install命令

测试nginx 性能

wrk -t16 -c100 -d30s -H "Connection:Close" --latency http://localhost

100线程

Requests/sec: 54476.08

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

200线程

Requests/sec: 54365.50

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

1000线程

Requests/sec: 54547.83

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

nginx 小总结

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

测试报告 倒是和 appinfo提供的 差不多

等会 我没有对linux 系统参数进行优化,改下 试试

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

linux 系统参数调优之后

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

嗯嗯 没有任何变化

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

本来想 可能是带宽的事 结果 并不是。。。。

正式测试 自研的网关

我初步测试 也是 4w多 req/sec ,具体测试步骤 下一篇写

2个版本

  1. netty + disruptor
  2. 压榨单机性能 (使用的是 JCTools的SPSC队列 也是模仿的 jvm s0 s1)

目前这个网关 只是用了一周的额外时间写的demo 版本,还有很多需要完善的

彩蛋

你要是额外问我 为什么不用go写,我只能回答你 go 我不熟,我还在学习中。。。。

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

LOL

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

太难了 ,LOL 体验服 我已经快放弃了,进不去。。。

本项目的起因

我在做 公司网关的openapi 对接,网关有一个加解密,但是很可惜,有很多坑,花了我2天时间(虽然不是全天) 但是 我很难受,给我逼的 自己把gateway 代码 拿下来看的,不看不知道,一看 嗯,是有点可以改善的,搞搞呗

其实也是相较于以前 可能是代码能力提升了,之前是懂点 但是写不出来,现在别管对不对,至少能写出来了 哈哈

【雨夜】gateway 性能测试 具体步骤 和 自研的网关

感谢我现在公司老大,有很多问题 是 我在下班之后 直接语音老大 交流得到的 哈哈

老大的心态

【雨夜】gateway 性能测试 具体步骤 和 自研的网关