python怎么测试uwsgi并发量_uWSGI使用介绍及性能测试结果

2023-11-02

uwsgi介绍

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。

1.WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。

2.uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。

3.而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。

4.uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of information),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。

uwsgi性能非常高

14092bb0e0df

性能对比柱状图.png

uWSGI的主要特点如下

超快的性能

低内存占用(实测为apache2的mod_wsgi的一半左右)

多app管理(终于不用冥思苦想下个app用哪个端口比较好了-.-)

详尽的日志功能(可以用来分析app性能和瓶颈)

高度可定制(内存大小限制,服务一定次数后重启等)

总而言之uwgi是个部署用的好东东,正如uWSGI作者所吹嘘的:

If you are searching for a simple wsgi-only server, uWSGI is not for you, but if you are building a real (production-ready) app that need to be rock-solid, fast and easy to distribute/optimize for various load-average, you will pathetically and morbidly fall in love (we hope) with uWSGI.

uWSGI 安装

下载uWSGI 2.0.18,安装:

python setup.py install

uWSGI 代码示例

simple_app.py代码测试文件

#file:simple_app.py

import uwsgi

import os

print("!!! uWSGI version:", uwsgi.version)

def ciao():

print("modifica su /tmp")

def ciao2():

print("nuovo uwsgi_server")

print os.getpid()

counter = 0

#if uwsgi.load_plugin(0, 'plugins/example/example_plugin.so', 'ciao'):

# print "example plugin loaded"

#else:

# print "unable to load example plugin"

#uwsgi.event_add(uwsgi.EVENT_FILE, "/tmp", ciao)

#uwsgi.event_add(uwsgi.EVENT_DNSSD, "_uwsgi._tcp", ciao2)

#uwsgi.event_add(uwsgi.EVENT_TIMER, 1000, ciao2)

uwsgi.post_fork_hook = ciao2

def application(env, start_response):

global counter

#print(env)

start_response('200 Ok', [('Content-type', 'text/plain')])

yield "hello world"

yield "hello world2"

for i in range(1,1000):

yield str(i)

yield "\n"

yield str(counter)

counter += 1

simple_app.ini配置文件如下:

[uwsgi]

socket = /tmp/%n.sock

processes = 4

master = 1

启动脚本

uwsgi --http-socket :9099 --wsgi-file simple_app.py --ini simple_app.ini

测试结果

uWSGI 4进程,使用jmeter并发量10线程/10000次,吞吐量大概在2104.7/s。

14092bb0e0df

linux uWSGI进程运行截图.png

14092bb0e0df

jmeter性能测试结果图.png

Label

# 样本

平均值

吞吐量

uwsgi/test

100000

4

2104.73144

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python怎么测试uwsgi并发量_uWSGI使用介绍及性能测试结果 的相关文章

  • SpringBoot之【mybatisplus】快速上手

    文章目录 1 概述 特性 2 快速开始 2 1 新建springboot 引入相关依赖 2 2 配置文件 2 2 1 在resources下新建db文件 2 2 2 配置文件yml 2 3 编码 2 3 1 启动类增加mapper扫描 2
  • 惊呼!VSCode 花式摸鱼大法!

    开始正文之前 推荐一款CocosStore新上架 超硬核动作游戏 Rougelike RPG Game Demo 来欣赏下游戏效果吧 源码地址 https store cocos com app detail 3117 作者QQ群 1192
  • http://blog.csdn.net/haomcu/article/details/7267090

    转自 http blog csdn net haomcu article details 7267090 一 Android平台Wifi的基本代码路径 1 Wpa supplicant源码部分 external wpa supplicant
  • 7-2 利用数组计算斐波那契数列 (15 分)

    本题要求编写程序 利用数组计算菲波那契 Fibonacci 数列的前N项 每行输出5个 题目保证计算结果在长整型范围内 Fibonacci数列就是满足任一项数字是前两项的和 最开始两项均定义为1 的数列 例如 1 1 2 3 5 8 13
  • MySQL 表的增删改查

    MySQL 表的 CURD 什么是 CURD 一 增加数据 1 insert into 语句 2 insert 语句注意事项 二 查询数据 1 全列查找 2 指定列查找 3 指定列查询为表达式 4 查询列指定别名 5 查询结果去重 6 针对
  • odoo系统架构介绍

    简介 odoo是一个现代化的商业应用套件 使用AGPL许可证 并具有客户关系管理 CRM 人力资源 销售 采购 会计 仓库管理 项目管理 以及众多社区模块 它是基于一个模块化 可扩展和直观的快速开发应用程序 RAD 的框架 使用Python
  • C语言实现流媒体广播项目

    一 简介 一个简单的流媒体项目 基于客户端 服务器模型 C S 开发 采用UDP组播技术 实现MP3格式音乐广播系统 服务器端采用多线程处理频道信息 实现媒体库 MP3 读取并进行流量控制 令牌桶 并通过UDP组播发送 客户端采用多进程 实
  • 用C++写一个顺序表简单实例

    要求 1 构造空的顺序表 2 建立含有若干数据元素的顺序表并输出 3 求表长 4 获取第三个元素的值 5 在第四个位置后 插入一个值为 38 的新的元素后输出顺序表 6 删除第五个位置上的元素后输出顺序表 测试数据 23 33 21 45
  • SQLZOO selfjoin/zh——爱丁堡巴士

    1 數據庫中有多少個站stops select count name from stops 2 找出車站 Craiglockhart 的 id select id from stops where name Craiglockhart 3
  • cmake的使用

    cmake CMake是一个跨平台的安装 编译 工具 可以用简单的语句来描述所有平台的安装 编译过程 他能够输出各种各样的makefile或者project文件 能测试编译器所支持的C 特性 类似UNIX下的automake
  • 自定义事件——this.$emit

    数据项在Vue的实例中 但是删除操作要在组件中完成 那么组件如何才能删除Vue实例中的数据呢 此时就涉及到参数传递与事件分发了 Vue为我们提供了自定义事件的功能 很好的帮助我们解决了这个问题 使用this emit 自定义事件名 参数
  • Snipaste1.12 贴在屏幕上的图不能操作解决方法

    使用Snipaste 将截图贴在屏幕上后 不能通过鼠标双击关闭 也不能移动 关闭后重开截图还继续在屏幕上 原因是在贴图时可能按到字母X 触发了内置快捷键 解决方法 右键图标 选择贴图 选择默认 也有可能是其他文字 然后选择关闭就可以了
  • Java 线程文字左右移动

    线程对象调用start 方法开启线程 并让调用run 方法在开启的线程中执行 import javax swing public class donghua JFrame jFrame JLabel jLabel class MyThrea
  • spring文件上传

    spring文件上传 在pom xml文件中加入
  • 不受环境干扰,这套声学全息方案实现了虚实交互

    一谈到全息显示 大家默认想到的就是光学全息方案 比如需要将光投射到某样东西上 比如视网膜 或是烟雾等介质上 才能成像 市面上一些常见的2D 3D全息方案 如全息风扇 Voxon全息系统等等 分别采用高速移动的条状光源或是平面介质 利用人眼视
  • show_bytes函数

    show bytes打印出每个以十六进制表示的字节 这段代码使用强制转换来访问和打印不同程序对象的字节表示 用typedef将数据结构类型byte pointer定义为一个指向类型 unsigned char 的对象的指针 typedef
  • 使用PicGo搭建github图床时出现图片上传失败(加载栏红色)的解决方法

    问题 使用PicGo搭建github图床 出现图片上传失败 加载栏红色 具体 图片上传失败 加载栏红色 解决后又发现图片可以用但是没法显示的问题 解决方案 解决方案 设定分支名改为main就好了 而不是master 最后重启一下就可以了 图
  • php网页能实现飘窗吗,网站飘窗广告的实现方法

    原标题 网站飘窗广告的实现方法 效果 代码 以上 在background url里设置飘窗广告图片的外链地址 其他参数也可以自己调整 像width height 关闭 以上 在a href里设置需要跳转的页面 lt language jav
  • 参考椭球体与大地水准面的区别

    转载 https www propelleraero com geoids vs ellipsoids whats the difference https support virtual surveyor com support solu

随机推荐

  • 结合机器学习的人口模型能够提高心理健康测量的准确性

    结合机器学习的人口模型能够提高心理健康测量的准确性 导语 关键术语解释 方法 Software Workflow Fig 1 Methods workflow https img blog csdnimg cn eea5b06d071242
  • 编译器(GNU & GCC & clang & llvm)

    前言 很多时候 出现一些类似GNU GCC CLANG LLVM等与编译器有关的名词的时候 都不太清楚它到底是干嘛的 理解这些东西后 对于xcode中很多配置型的需求修改起来都会得心应手 因此有必要了解透彻他们直接的关系与区别 1 GNU
  • 关于影视后期制作的就业市场调查报告

    关于影视后期制作的就业市场调查报告 21电商王绮悦 目 录 一 简介及发展前景 二 技能要求 三 工作内容 四 用人单位类型 五 发展路径及其所需具体技能 六 行业优势 七 行业劣势 八 自身分析 九 对暑期实践的规划 十 学习材料 十一
  • 2023暑期实习历程总结

    一 前言 Hello 大家好久不见 已经三个月左右没有更新了 那我这三个月在干什么呢 自2023年3月中旬开始到现在五月底这期间接近三个月的时间里 我一直在进行2023暑期实习的投递和面试 这期间投递了包括各大中厂 阿里 腾讯 蚂蚁 美团
  • Jmter的安装及使用

    Jmter的安装 浏览器下载安装解压 解压后控制台输入控制命令cmd 将解压后的jmter bin文件夹下的jmter bat拖入控制台 打开jmter 使用Jmter 在jmter中可以添加各种测试 这是一个抗压测试 各种功能测试可以百度
  • SIP协议-02 原理讲解

    文章目录 1 SIP实现机制 2 SIP网络元素 2 1 用户代理 2 2 代理服务器 2 3 重定向服务器 2 4 位置服务器 2 5 注册服务器 3 SIP中的几个重要概念 3 1 Messages 消息 3 2 Dialog 对话 3
  • PLSQL Developer安装配置教程(超详细)

    前言 首先要有oracle数据库或者有oracle服务器 才可以实现使用PLSQL Developer 工具连接到oracle数据库进行开发 1 下载 PLSQL Developer 链接 https pan baidu com s 1zV
  • 是科研人就要快!加速你的算法!

    在科研中 大多数论文其实还是看精度和效果的 对于速度其实没有那么高的追求 很多人用速度评价自己算法的复杂度很低 但实际上这是不准确的 当然在精度占优的情况下 能够提高速度 给自己的实验结果增彩 关于算法程序的加速 在动手前先要按照如下流程进
  • Linux下的iptables防火墙管理方法

    Linux下的iptables防火墙管理方法 文章目录 Linux下的iptables防火墙管理方法 1 什么是iptables 2 iptables命令参数 3 iptables策略 4 iptables地址转发 5 iptables端口
  • VUE中使用RSA加密

    一 安装 npm install jsencrypt save 二 在main js中引用依赖 导入RSA加密 import JSEncrypt from jsencrypt Vue prototype getRsaCode functio
  • 6种延时队列的实现方案

    延时队列的应用 什么是延时队列 顾名思义 首先它要具有队列的特性 再给它附加一个延迟消费队列消息的功能 也就是说可以指定队列中的消息在哪个时间点被消费 延时队列在项目中的应用还是比较多的 尤其像电商类平台 订单成功后 在30分钟内没有支付
  • 一级二级菜单slideToggle

  • 最短路径之迪克斯特拉(Dijkstra)算法

    何谓最短路径 顾名思义就是在一个图中 一个顶点到另外一个顶点的最短距离拉 那么这里有一点要注意 就是在网图中 边的权值各不相同 最短路径指的是俩点之间的连线权值最小 在非网图 边的权值都默认为1 中最短路径指的是边数最少的 从一个顶点到其余
  • 3D Vision--生成空间任意圆柱及任意直线

    contents 写在前面 几何原理 圆柱的方程 用于拟合已有圆柱 圆柱空间参数方程 用于生成圆柱 python代码 生成结果 完 写在前面 1 内容 如何生成空间任意圆柱体点云及其轴线 任意直线的生成也就是本文轴线的生成方式 2 环境 o
  • shell 命令 grep -v

    grep v shell命令中 grep命令 是对文本行的搜索命令 grep v就是反向文本行搜索 当控制台输出很多时 有很多是我们不想看到的 就可以用到grep v命令 举个栗子 ls l 结果如下 我们不想看到包含repair的行 执行
  • opencv轻松入门面向python下载_《OpenCV轻松入门:面向Python(博文视点出品)》(李立宗)【摘要 书评 试读】- 京东图书...

    本书采用Python语言 以案例的形式介绍了OpenCV中的常用算法及其使用方法 Python是一种高效的开发语言 使用Python调用OpenCV中的算法 可以快速地实现计算机视觉应用 于仕琪 OpenCV开源库在国内的早期推广者 Ope
  • oracle中 case when,Oracle CASE WHEN的用法

    CASE WHEN的两种表达形式 方式一 CASE WHEN D10 成功签收 THEN 1 WHEN D11 成功签收 THEN 1 ELSE NULL END WHEN 中间是用判断表达式 方式二 CASE D10 WHEN 成功签收
  • OSError: No such file or directory: 'C:\\Users\\2019\\AppData\\Roaming\\nltk_data\\corpora\\stopword

    nltk download
  • 在VS2017中使用Qt的ui界面添加控件后在cpp源文件中无法调用解决方法

    右键项目属性 找到 Qt Project Settings 将Show in Build Log 属性设置为否 点击确定回到cpp就可以使用ui调用部件了
  • python怎么测试uwsgi并发量_uWSGI使用介绍及性能测试结果

    uwsgi介绍 uWSGI是一个Web服务器 它实现了WSGI协议 uwsgi http等协议 Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换 要注意 WSGI uwsgi uWSGI 这三个概念的区分 1 W