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