接口性能测试避坑 Django+Nginx+uwsgi接口性能调优postman Apifox ab

news/2024/10/19 4:21:46/

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


http://www.ppmy.cn/news/12838.html

相关文章

Java基础学习笔记(十六)—— IO流

IO流1 IO流1.1 IO流概述1.2 IO流的分类1.3 IO流的使用场景2 File类2.1 File类概述2.2 File类构造方法2.3 File类常用方法2.4 File类案例3 字节流3.1 字节流写数据3.2 字节流写数据的三种方式3.3 字节流写数据加异常处理3.4 字节流读数据3.5 字节流复制文件4 字节缓冲流4.1 字节…

MXNet的Faster R-CNN(基于区域提议网络的实时目标检测)《7》

不知不觉已是第七篇了,发觉这篇论文所涉及的知识点特别多,我的个人习惯是先把论文看一遍,了解这个大概,然后将源码运行一遍,熟悉下这个模型带来的大概效果是怎么样的,然后就阅读源码了,从源码中…

NTP(Network Time Protocol)协议详解

一、NTP的基本概念: NTP(Network Time Protocol)------网络时间协议-----应用层协议,用来在分布式时间服务器和客户端之间进行时间同步。 二、采用NTP的目的: 是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟…

【Linux】六、Linux 基础IO(二)|重定向|如何理解 Linux一切皆文件|缓冲区

目录 五、重定向 5.1 什么是重定向 5.2 系统调用 dup2 5.3 三种重定向测试 5.3.1 输出重定向(>) 5.3.2 追加重定向(>>) 5.3.3 输入重定向(<) 5.4 父子进程拷贝问题 六、如何理解 Linux一切皆文件 七、缓冲区 7.1 认识缓冲区 7.2 缓冲区的刷新策略 …

【微信小程序】动态设置导航栏标题

&#x1f3c6;今日学习目标&#xff1a;第十八期——动态设置导航栏标题 &#x1f603;创作者&#xff1a;颜颜yan_ ✨个人主页&#xff1a;颜颜yan_的个人主页 ⏰预计时间&#xff1a;25分钟 &#x1f389;专栏系列&#xff1a;我的第一个微信小程序 文章目录前言使用配置文件…

vue组件传值方式有哪些

Vue 作为一个轻量级的前端框架&#xff0c;核心两大特性就是响应式编程和组件化。 本文针对组件之间传值做详细讲解。 Vue就是由一个一个的组件构成的&#xff0c;组件化是它的精髓&#xff0c;也是最强大的功能之一。而组件实例的作用域是相互独立的&#xff0c;这就意味着不…

(第五章)OpenGL超级宝典学习:缓冲

缓冲 前言 本篇在讲什么 关于OpenGL数据缓冲的相关内容 本篇适合什么 适合初学OpenGL的小白 想了解OpenGL缓冲对象的同学 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文…

PHP MySQL 插入多条数据

使用 MySQLi 和 PDO 向 MySQL 插入多条数据 mysqli_multi_query() 函数可用来执行多条SQL语句。 以下实例向 "MyGuests" 表添加了三条新的记录: 实例 (MySQLi - 面向对象) <?php $servername "localhost"; $username "username"; $pas…