使用工具:siege

代码结构:

hello.py

templates

|--hello.html

hello.py代码:

from flask import Flask, render_template
app = Flask(__name__) @app.route('/')
@app.route('/<name>')
def index(name=None):
return render_template('hello.html',name=name) if __name__ == '__main__':
app.run(host='0.0.0.0',port=13579, debug=False)

hello.html代码:

from Flask</title>
{% if name %}
<h1>Hello {{ name }}!</h1>
{% else %}
<h1>Hello World!</h1>
{% endif %}

flask

命令:siege -c 1000 -r 100 -b http://127.0.0.1:13579/3344

结果:

Transactions:               29511 hits
Availability: 95.08 %
Elapsed time: 254.69 secs
Data transferred: 1.15 MB
Response time: 1.16 secs
Transaction rate: 115.87 trans/sec
Throughput: 0.00 MB/sec
Concurrency: 134.19
Successful transactions: 29511
Failed transactions: 1527
Longest transaction: 88.56
Shortest transaction: 0.00

gunicorn

命令:gunicorn -w 1 -b 127.0.0.1:13578 hello_gunicorn:app

命令:siege -c 1000 -r 100 -b http://127.0.0.1:13578/3344

结果:

Transactions:               57354 hits
Availability: 96.91 %
Elapsed time: 188.50 secs
Data transferred: 2.24 MB
Response time: 0.41 secs
Transaction rate: 304.27 trans/sec
Throughput: 0.01 MB/sec
Concurrency: 124.78
Successful transactions: 57354
Failed transactions: 1831
Longest transaction: 85.62
Shortest transaction: 0.00

tornado

命令:siege -c 1000 -r 100 -b http://127.0.0.1:13577/3344

结果:

Transactions:              217509 hits
Availability: 99.42 %
Elapsed time: 205.48 secs
Data transferred: 8.50 MB
Response time: 0.34 secs
Transaction rate: 1058.54 trans/sec
Throughput: 0.04 MB/sec
Concurrency: 356.45
Successful transactions: 217509
Failed transactions: 1266
Longest transaction: 89.39
Shortest transaction: 0.03

gevent

命令:siege -c 1000 -r 100 -b http://127.0.0.1:13576/3344

结果:

Transactions:              999952 hits
Availability: 100.00 %
Elapsed time: 509.62 secs
Data transferred: 39.10 MB
Response time: 0.48 secs
Transaction rate: 1962.15 trans/sec
Throughput: 0.08 MB/sec
Concurrency: 935.08
Successful transactions: 999952
Failed transactions: 48
Longest transaction: 63.23
Shortest transaction: 0.02

twisted

命令:twistd -n web --port 13575 --wsgi hello_twised.app

命令:siege -c 1000 -r 100 -b http://127.0.0.1:13575/3344

结果:

Transactions:              155276 hits
Availability: 99.14 %
Elapsed time: 321.25 secs
Data transferred: 6.07 MB
Response time: 0.77 secs
Transaction rate: 483.35 trans/sec
Throughput: 0.02 MB/sec
Concurrency: 371.09
Successful transactions: 155276
Failed transactions: 1340
Longest transaction: 83.32
Shortest transaction: 0.04

————————————————
版权声明:本文为CSDN博主「peter-广」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/marscrazy_90/java/article/details/41943211

web 部署专题(四):压力测试(二)压力测试实例 flask 四种wsgi方式对比(tornado,Gunicorn,Twisted,Gevent)的更多相关文章

  1. web 部署专题(三):压力测试(一)工具 siege

    1.介绍 Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访 ...

  2. web服务器专题:tomcat(二)模块组件与server.xml 配置文件

    web服务器专题:tomcat(二)模块组件与server.xml 配置文件 回顾: Web服务器专题:tomcat(一) 基础模块 一个Server.xml的实例 <?xml version= ...

  3. web 部署专题(二):gunicore 并发部署(用gunicorn+gevent启动Flask项目)

    转自:https://blog.csdn.net/dutsoft/article/details/51452598 Flask,webpy,Django都带着 WSGI server,当然性能都不好, ...

  4. AngularJS测试二 jasmine测试路由 控制器 过滤器 事件 服务

    测试应用 1.测试路由 我们需要检测路由是否在运作,是否找到了,或者是404了.我们要确认路由事件触发了,预期的模板是否真的加载了.既然路由会改变页面的地址(URL)和页面内容,我们需要检测路由是否被 ...

  5. 精读JavaScript模式(四),数组,对象与函数的几种创建方式

    一.前言 放了个元旦,休息了三天,加上春运抢票一系列事情的冲击,我感觉我的心已经飞了.确实应该收收心,之前计划的学习任务也严重脱节了:我恨不得打死我自己. 在上篇博客中,笔记记录到了关于构造函数方面的 ...

  6. linux学习之centos(二):虚拟网络三种连接方式和SecureCRT的使用

    ---操作环境--- 虚拟机版本:VMware Workstation_10.0.3 Linux系统版本:CentOS_6.5(64位) 物理机系统版本:win10  一.虚拟网络三种连接方式 当在V ...

  7. 六十四、SAP中的内表的9种定义方式

    一.内表一共有9种定义方式,如下: 二.执行如下 *&--------------------------------------------------------------------- ...

  8. 【转】学习使用Jmeter做压力测试(二)--压力测试的实施

    JMeter测试步骤: 1.建立测试计划 2.添加线程组 3.添加HTTP请求 4.增加监听器 5.执行测试计划 6.根据JMeter提供的报告分析结果 一.目标 测试访问目标服务器网站首页的每秒查询 ...

  9. web 部署专题(六):nginx 安装(二) linux

    https://www.cnblogs.com/quzq/p/12131696.html 基础篇 一.环境 服务器版本:CentOS 7.2 为了保证学习阶段不遇到奇怪的事情,请保证以下四点(大神选择 ...

随机推荐

  1. Springboot搭建Eureka并设置Eureka登录账号密码

    Springboot搭建Eureka并设置Eureka登录账号密码 一.创建一个springboot项目 1.可以使用Spring Initializr,用浏览器打开http://start.spri ...

  2. @atcoder - ARC092F@ Two Faced Edges

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给出一个有向图,对每条边都做一次询问: 翻转这条边后,对原图的强 ...

  3. 小球(总结sort和cmp函数、结构体排序)

    问题 N: 小球(点击) 时间限制: 1 Sec  内存限制: 128 MB                                                               ...

  4. 2019-02-08 Python学习之Scrapy的简单了解

    今天遇到的问题和昨天差不多,一个Scrapy装了好久,anaconda卸了又装,pycharm卸了又装,环境变量配置一堆,依赖包下载一堆.查了一堆资料总算是搞好了. Scripy: 先放个框架结构图( ...

  5. Windows服务监控工具Perfmon

    原文:https://www.jianshu.com/p/f82c2b726ecf 一.Perfmon简介.性能监控指标.性能对象指标 Perfmon:提供了图表化的系统性能实时监视器.性能日志和警报 ...

  6. 安装elasticsearch的坑

    elasticsearch启动报“此时不应有 \Common 原因 Java 环境变量出错 解决 修改 elasticsearch.bat , 添加一句 : SET params='%*' SET J ...

  7. openresty用haproxy2.0实现负载均衡

    安装openresty 编译安装 yum install pcre-devel openssl-devel gcc curl wget wget https://openresty.org/downl ...

  8. ca73a_c++_流的条件状态

    /*ca73a_c++_流的条件状态strm::iostate strm::badbit //流的状态strm::failbit //输入的状态,应该输入数字,结果输入为字符,strm::eofbit ...

  9. shell 脚本操作informix数据库

    shell 脚本操作informix数据库的简单模板: functionName(){ dbaccess << ! database 库名; sql语句; ! } 栗子1:更新数据 fun ...

  10. vue cli3项目中使用qrcodejs2生成二维码

    组件的形式创建 1.下载依赖 npm install qrcodejs2 2.创建一个.vue的组件放置代码(我创建的是qrcodejs2.vue) //template中的代码 <templa ...