Python flask 与 GO WEB服务器性能对比
测试环境:
- 系统: CentOS 7.1
- Mem: 8G
- CPU: 虚拟机16核
- Python版本: python3.6
- Flask版本: 0.12.2
- Golang版本: 1.6.3
1.首先写一个Flask的web程序,只返回一个 Hello word!
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello word!'
if __name__ == '__main__':
app.run()
2.写一个go语言的web程序,也返回一个 Hello word!
package main
import (
f "fmt"
"log"
"net/http"
)
func sayhelloName(w http.ResponseWriter, r *http.Request) {
f.Fprintln(w, "hello world!")
}
func main() {
http.HandleFunc("/", sayhelloName)
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatal("ListenAndServe:", err)
}
}
3.直接在控制台启动Flask, 用压力测试工具模拟并发请求。这里模拟100个并发100000个请求。
ab -n 100000 -c 100 "http://172.30.200.88:5000/"
Server Software: Werkzeug/0.12.2
Server Hostname: 172.30.200.88
Server Port: 5000
Document Path: /
Document Length: 11 bytes
Concurrency Level: 100
Time taken for tests: 88.441 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 16500000 bytes
HTML transferred: 1100000 bytes
Requests per second: 1130.70 [#/sec] (mean)
Time per request: 88.441 [ms] (mean)
Time per request: 0.884 [ms] (mean, across all concurrent requests)
Transfer rate: 182.19 [Kbytes/sec] received
4.用Gunicorn以8个进程启动flask,再以同样的并发测试一遍
Server Software: gunicorn/19.7.1
Server Hostname: 172.30.200.88
Server Port: 8080
Document Path: /
Document Length: 11 bytes
Concurrency Level: 100
Time taken for tests: 15.842 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 17100000 bytes
HTML transferred: 1100000 bytes
Requests per second: 6312.50 [#/sec] (mean)
Time per request: 15.842 [ms] (mean)
Time per request: 0.158 [ms] (mean, across all concurrent requests)
Transfer rate: 1054.14 [Kbytes/sec] received
5.以同样的并发测试Go
Server Software:
Server Hostname: 172.30.200.88
Server Port: 8080
Document Path: /
Document Length: 13 bytes
Concurrency Level: 100
Time taken for tests: 12.460 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Total transferred: 13000000 bytes
HTML transferred: 1300000 bytes
Requests per second: 8025.80 [#/sec] (mean)
Time per request: 12.460 [ms] (mean)
Time per request: 0.125 [ms] (mean, across all concurrent requests)
Transfer rate: 1018.90 [Kbytes/sec] received
测试结果:
Flask 总耗时 88.441秒,平均每秒处理1130个请求
Gunicorn多进程时耗时 15.842, 平均每秒处理 6312个请求
Go 总耗时 12.46秒,每秒处理 8025个请求
相比之下 go跟gunicorn的处理速度有提升,但是并没有像传说中十倍的性能。在测试中还发现,在用flask的时候并不能支持大并发,当并发在200以上就很容易报错了, 而Golang的并发到1000都能正常运行,这一点上差距比较大。
Python flask 与 GO WEB服务器性能对比的更多相关文章
- 个人学期总结及Python+Flask+MysqL的web建设技术过程
一个学期即将过去,我们也迎来了2018年.这个学期,首次接触了web网站开发建设,不仅是这门课程,还有另外一门用idea的gradle框架来制作网页. 很显然,用python语言的flask框架更加简 ...
- Python+Flask+MysqL的web建设技术过程
一.前言(个人学期总结) 个人总结一下这学期对于Python+Flask+MysqL的web建设技术过程的学习体会,Flask小辣椒框架相对于其他框架而言,更加稳定,不会有莫名其妙的错误,容错性强,运 ...
- Python+Flask+MysqL的web技术建站过程
1.个人学期总结 时间过得飞快,转眼间2017年就要过去.这一年,我学习JSP和Python,哪一门都像一样新的东西,之前从来没有学习过. 这里我就用我学习过的Python和大家分享一下,我是怎么从一 ...
- Web服务器性能监控分析与优化
Web服务器性能监控分析与优化 http://www.docin.com/p-759040698.html
- Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程 - VPS侦探
Web服务器性能/压力测试工具http_load.webbench.ab.Siege使用教程 - VPS侦探 http://soft.vpser.net/test/http_load/http_loa ...
- python超简单的web服务器
今天无意google时看见,心里突然想说,python做web服务器,用不用这么简单啊,看来是我大惊小怪了. web1.py 1 2 3 #!/usr/bin/python import Simp ...
- python自带的web服务器
python自带的web服务器 python自带的包可以建立简单的web服务器 BaseHTTPServer 提供基本的web服务和处理类 SimpleHTTPServer 包含执行get请求的Sim ...
- Web服务器性能压力测试工具http_load、webbench、ab、Siege使用教程
Web服务器性能压力测试工具http_load.webbench.ab.Siege使用教程 作者: feng 日期: 2012/07/25 发表评论 (0) 查看评论 一.http_load 程序 ...
- Web服务器性能/压力测试工具http_load、webbench、ab、Siege、loadrunner
回头看看 Web服务器性能/压力测试工具http_load.webbench.ab.Siege.loadrunner
随机推荐
- nginx.conf文件的使用
默认配置语法 全局---服务级别的配置 user 设置nginx服务的系统使用用户,基本上不用动 worker_processes 工作进程数---跟nginx多worker有关,增大连接数的并发处理 ...
- 题解 【NOIP2014】解方程
题面 解析 这题的数据看起来似乎特别吓人... 但实际上, 这题非常好想. 只需要模一个大质数就行了(我模的是1e9+7)(实测有效) 另外,a要用快读读入,再一边模Mod(因为实在太大了). 然后, ...
- ant-design-vue 修改组件样式
/deep/ .ant-input { border-radius: 50px; }
- EL表达式接收值
- noi.ac NOI挑战营模拟赛1-5
注:因为博主是个每次考试都爆零垫底的菜鸡,所以此篇博客很有可能咕咕咕 (指只贴AC代码不写题解的......如果我真的不会做的话,就不能怪我了qwqwq) Day1 T1 swap 23pts 从一个 ...
- python播放音乐
最近一直想实现使用Python播放音乐的功能,找了百度上的好多博客,要不就只能播放wav格式的,要不播放mp3格式的但无法在Linux系统下使用的,或者只能在Python2的情况下播放的,写的都不符合 ...
- Jmeter -- 循环控制器和线程并发(关注执行顺序)
测试计划中包含两个线程组,分别设置如下: 线程组1:线程数为2,循环次数为4 线程组2:线程数为4 执行顺序 监听器View Results in Table(用表格查看结果)中,ThreadName ...
- Hbase底层解析
hfile+compaction 原理 用户数据写入先写WAL,再写缓存,满足一定条件后缓存数据会执行flush操作真正落盘,形成一个数据文件HFile.太多数据文件会导致数据查询IO次数增多,因 ...
- logback条件日志配置
logback支持条件日志配置,支持在测试环境和正式环境使用不同的参数启用不同的日志配置,从而避免手动修改日志配置文件.项目除了引入logback的包以外,还需要引入构件org.codehaus.ja ...
- TCP 之 FIN_WAIT_2状态处理流程
概述 在主动关闭方发送了FIN之后,进入FIN_WAIT_1状态,在此状态收到了ACK,则进入FIN_WAIT_2状态,而FIN_WAIT_2后续要做的工作是等待接收对端发过来的FIN包,并且发送AC ...