【雨夜】gateway 性能测试 具体步骤 和 自研的网关
序
最近再看公司 网关的代码,11月末的最后一个周末 突然有了一些想法,就想把自己看看 能不能写一个简单的网关 测试下 性能(当然了 还有过滤器 那些东西,不过初期先不考虑)
别处看的
现在的几个网关
- nginx
- kong
- apinto
验证其性能
总不能你说什么是什么吧,我需要重复性的验证下,就向apiinto 要了一下性能测试
准备工作
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 测试结果
你告诉我100线程5w多,这结果3w左右,不对啊,不过我回去一看,他要求的
我靠 我怎么没看过这个 cpu,我先去百度云找下(我的服务器 在百度云)
我想根据 处理器找,我需要去找 实例规格
我们要找的测试服务器到底是什么呢?
cpu | Intel(R) Xeon(R) Platinum 8369B CPU @ 270GHz*4 |
---|---|
服务器操作系统 | Linux 内核版本:3.10.0-1160.36.2.el7.x86_64 |
------- | --------------------------------------- |
查看cpu
cat /proc/cpuinfo
查看 linux 内核版本
cat /proc/version
百度云按照cpu找
查询 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) 好,行吧 找不到匹配的 用更好的也行
测试的机器选择
用 阿里云的
镜像 肯定要用公共的镜像,centos 7.9 走起
按需购买 走起,毕竟穷逼一个。。。。
正式测试 apinfo
100线程
29188.71
200线程
30415.19
1000线程
29254.27
小总结
这。。。不知道是不是我测试的方法不对,官方告诉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
200线程
Requests/sec: 54365.50
1000线程
Requests/sec: 54547.83
nginx 小总结
测试报告 倒是和 appinfo提供的 差不多
等会 我没有对linux 系统参数进行优化,改下 试试
linux 系统参数调优之后
嗯嗯 没有任何变化
本来想 可能是带宽的事 结果 并不是。。。。
正式测试 自研的网关
我初步测试 也是 4w多 req/sec ,具体测试步骤 下一篇写
2个版本
- netty + disruptor
- 压榨单机性能 (使用的是 JCTools的SPSC队列 也是模仿的 jvm s0 s1)
目前这个网关 只是用了一周的额外时间写的demo 版本,还有很多需要完善的
彩蛋
你要是额外问我 为什么不用go写,我只能回答你 go 我不熟,我还在学习中。。。。
LOL
太难了 ,LOL 体验服 我已经快放弃了,进不去。。。
本项目的起因
我在做 公司网关的openapi 对接,网关有一个加解密,但是很可惜,有很多坑,花了我2天时间(虽然不是全天) 但是 我很难受,给我逼的 自己把gateway 代码 拿下来看的,不看不知道,一看 嗯,是有点可以改善的,搞搞呗
其实也是相较于以前 可能是代码能力提升了,之前是懂点 但是写不出来,现在别管对不对,至少能写出来了 哈哈
感谢我现在公司老大,有很多问题 是 我在下班之后 直接语音老大 交流得到的 哈哈
老大的心态
转载自:https://juejin.cn/post/7172841625134039047