接口性能测试避坑 Django+Nginx+uwsgi接口性能调优postman Apifox ab
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
Django开发了个接口供外部调用Django的并发性能弱早有所闻所以采用Django+Nginx+uwsgi架构来提高并发量。然后使用测试工具测试并发量。
服务器配置
CPU 2内存8G
接口内容只有3句
request_data = {"code":"0","msg":"test"}
logger.info(f'---------------')
return JsonResponse(request_data)
postman测试结果是每秒平均处理能力为12次左右因为 postman 的run 测试不是并发不是并发不是并发
采用Apifox进行测试结果也正的是并发测试结果大致如下
下表的Nginx 主要配置为
worker_processes 1
keepalive_timeout 65
worker_connections 1024
大致测试结果如下
的确是并发了但是处理能力怎么调整都无法超过50次每秒。Nginx其他参数也进行了调整如worker_processes、multi_accept off、use epoll等处理能力都没有大的变化最后检查了Nginx的访问日志access.log发现接收到的请求就远远没有达到我在Apifox中设置的每秒100考虑问题应该出在了发送请求的性能上后面用多台电脑同时测试果然处理能力上来了。统计的结果显示单台Apifox每秒能发出的请求无法达到每秒100次。
最终通过Apifox调整的参数为如下其他基本都是系统默认或安装时默认
uwsgi:
processes=2;
threads=30;
listen=1000;
buffer-size=32768;
max-requests=500;
nginx:
worker_processes 2;
worker_connections 1024;
最后祭出大杀器linux ab 指令
ab -n 500 -c 500 http://*.*.*.*/test
-n 总请求次数
-c 并发数
测试出来的结果平均每秒处理能力为112次左右整整比Apifox测试出来的翻了1倍多。
综上所述并发测试不要采用postman少量并发测试可以采用Apifox大致少于30次并发的可以考虑采用要验证接口性能极限还是建议采用ab命令。
ab 命令安装
windows 安装
官方下载链接https://www.apachehaus.com/cgi-bin/download.plx
下载Apache解压后直接用cmd进入目录\Apache24\bin使用或添加环境变量。
linux 安装
yum -y install httpd