使用 Jmeter 测试 easyswoole 接口

服务器配置:

cpu:2核、内存:4GB  带宽:带宽:1Mbps

环境:nginx + php7.2 + mysql 5.7

测试工具:Jmeter 

接口的代码和地址在前面两篇文章中可以找到。

首先在window系统安装jmeter,配置JDK就可以使用了。

打开jmeter,新建测试计划,登录接口测试。

使用 Jmeter 测试 easyswoole 接口

然后创建线程组:

使用 Jmeter 测试 easyswoole 接口

线程数填1000,ramp-up为0,持续时间为1秒,模拟 一秒 有一千个用户注册,即一秒钟一千个用户调用注册接口。

然后创建接口请求:

使用 Jmeter 测试 easyswoole 接口

填写协议、ip、地址参数,模拟post提交 要勾选图中两项:keepAlive 和 对post使用 form-data 不然接收不到数据,然后参数中设置post提交的数据,这里我用的是变量代码 参数值,变量值从csv数据源中读取。

接下来是设置csv数据源 

使用 Jmeter 测试 easyswoole 接口

文件内容:

使用 Jmeter 测试 easyswoole 接口

设置http header信息:

使用 Jmeter 测试 easyswoole 接口

我的接口验证是通过 appid 和 jwt 一起验证的,所以header 需要这两个参数。

然后设置相应断言:

使用 Jmeter 测试 easyswoole 接口

最后创建测试结果报告:

使用 Jmeter 测试 easyswoole 接口

我用结果树来观察返回值,聚合报告和观察总体概况。

接下来修改一下mysql配置 和 easyswoole mysql连接池,

mysql 最大连接数:

使用 Jmeter 测试 easyswoole 接口

easyswoole 数据库连接池数量

使用 Jmeter 测试 easyswoole 接口

我没有改nginx 支持最大请求数,可能高并发下需要优化一下nginx配置。

然后我的服务器安装了elasticsearch ,redis,我这两个程序关掉,elasticsearch占的内存有点大。把数据库user相关的清空。

准备测试:

使用 Jmeter 测试 easyswoole 接口

使用 Jmeter 测试 easyswoole 接口

 

使用 Jmeter 测试 easyswoole 接口

使用 Jmeter 测试 easyswoole 接口 结果上来看服务器运行都很正常。一千多个请求全部执行成功,并没有出错,系统吞吐量 199/sec ,这还是我装了集成环境的情况。如果换做单独的数据库服务器,性能还能提升不少。