使用 Jmeter 测试 easyswoole 接口
服务器配置:
cpu:2核、内存:4GB 带宽:带宽:1Mbps
环境:nginx + php7.2 + mysql 5.7
测试工具:Jmeter
接口的代码和地址在前面两篇文章中可以找到。
首先在window系统安装jmeter,配置JDK就可以使用了。
打开jmeter,新建测试计划,登录接口测试。
然后创建线程组:
线程数填1000,ramp-up为0,持续时间为1秒,模拟 一秒 有一千个用户注册,即一秒钟一千个用户调用注册接口。
然后创建接口请求:
填写协议、ip、地址参数,模拟post提交 要勾选图中两项:keepAlive 和 对post使用 form-data 不然接收不到数据,然后参数中设置post提交的数据,这里我用的是变量代码 参数值,变量值从csv数据源中读取。
接下来是设置csv数据源
文件内容:
设置http header信息:
我的接口验证是通过 appid 和 jwt 一起验证的,所以header 需要这两个参数。
然后设置相应断言:
最后创建测试结果报告:
我用结果树来观察返回值,聚合报告和观察总体概况。
接下来修改一下mysql配置 和 easyswoole mysql连接池,
mysql 最大连接数:
easyswoole 数据库连接池数量
我没有改nginx 支持最大请求数,可能高并发下需要优化一下nginx配置。
然后我的服务器安装了elasticsearch ,redis,我这两个程序关掉,elasticsearch占的内存有点大。把数据库user相关的清空。
准备测试:
结果上来看服务器运行都很正常。一千多个请求全部执行成功,并没有出错,系统吞吐量 199/sec ,这还是我装了集成环境的情况。如果换做单独的数据库服务器,性能还能提升不少。