Django 这性能,也慢的太夸张了.......

2020-03-16 19:16:11 +08:00
 black11black

如题,前几天看论坛讨论帖都觉得 django 不错,学前先测了测性能。。

配置:(平台 ubuntu )

django-admin startproject helloworld
# 编写一个 echo,访问 127.0.0.1:8080 回复"hello world"
gunicorn HelloWorld.wsgi -b 127.0.0.1:8080 -w 9

压测:

wrk -t16 -c500 -d10 http://127.0.0.1:8080

得到数据:

单进程 并发 794.46r/秒 ,平均延迟 140.74ms 九进程 并发 7700r/秒,平均延迟 28ms

虽然之前就想到 django 不会很快,毕竟 py 写服务性能也没那么重要,但是这也慢的太太太太太夸张了吧。。本地 echo 居然只有 700qps 的性能,本地 echo 延迟 0.1 秒,这。。。。。。。。。

对比一下 py 框架现在异步框架性能单线程 express 也能挑战一下的,就算 wsgi 跑的 flask,fork 的 rps 怎么也有两万,我用不到那么快,但是你也别慢的太夸张啊。。。。本地延迟这么高,干点啥畏首畏尾。。。。

是我哪里配置错了吗?

19495 次点击
所在节点    Django
94 条回复
laike9m
2020-03-17 09:35:19 +08:00
huangzongzhuan
2020-03-17 09:35:55 +08:00
@vicalloy 正解
Vegetable
2020-03-17 09:47:22 +08:00
世界上 90%的网站用 Django 写,性能都不会是瓶颈。也不知道你要用 Django 干什么会因为 900 的 qps 畏首畏尾。真正慢的 ORM 你还没用到呢就开始叫了吗
Django 去掉 middleware 之后 echo 的基本也就是一个空架子,和 flask 没什么区别。仔细了解工具的性能是好事,但是这种浮于表面的测试没有必要,回头和别人去黑都黑不到点子上。
Kilerd
2020-03-17 09:51:26 +08:00
gunicorn 没指定 gevent worker 就是 sync 模式,那肯定慢的啊。
stoneabc
2020-03-17 09:52:09 +08:00
你先把没用的 middleware 去掉。。
另外 Instagram 也用的 Django,几年前看他们方案是用的 uwsgi,性能上并没有太大问题。
sujin190
2020-03-17 09:54:12 +08:00
等你业务都已经做到堆机器 django 性能还是不够的时候,用不用 django 你已经无所谓了,所以 700 又咋滴很高了,这个世界也还没几个需要用的 700 每秒呢,大多数情况下相比运行性能业务性能更重要
sprite82
2020-03-17 09:55:10 +08:00
@Vegetable 世界上 90%的网站用 Django 写?大哥,能说下数据哪里来的吗
Vegetable
2020-03-17 10:00:34 +08:00
@sprite82
1.5 billion websites
Total number of Websites. There are over 1.5 billion websites on the world wide web today. Of these, less than 200 million are active.

随口说的,不过肯定是靠谱的,因为谷歌说 Active 的网站才 2 亿,占 15 亿的 13%...
tabris17
2020-03-17 10:03:44 +08:00
@black11black 不是 django 的异步版本,而是支持 ASGI (异步服务网关接口)
tabris17
2020-03-17 10:05:36 +08:00
@whoami9894 被隔壁 PHP7 吊起来打?拉倒吧,你一个全家桶框架跟 PHP 原生语言比个啥,同等级的 Laravel 一样慢出翔
Hanggi
2020-03-17 10:15:06 +08:00
@msg7086 不用 python 不就行了吗?
wslzy007
2020-03-17 10:21:38 +08:00
Golang 吧,各种 goweb 框架性能都不错,这里有性能测试数据供选型参考:www.jianshu.com/p/cc9417193b7f
tutusolo
2020-03-17 10:31:57 +08:00
Django makes it easier to build better Web apps more quickly and with less code.

这是他们官网对自己的定位 一个普通 web 网站不需要那么高的性能。

而且 py 的 web 框架 一般拿来做运维系统的和博客的居多

如果非要谈框架语言性能 可以尝试一下 go 追求极致的直接上 c++
Cbdy
2020-03-17 10:51:14 +08:00
limboMu
2020-03-17 10:55:05 +08:00
这个问题的瓶颈不应该是出在 GIL 或者协程没办法抢占计算任务上吗
Ansen
2020-03-17 10:55:29 +08:00
追求性能的话,建议用 golang

py 的技能全加在敏捷上了
gz911122
2020-03-17 10:59:32 +08:00
@luckyrayyy 试过
vertx 打上 1w 轻轻松松 跟玩一样
est
2020-03-17 11:19:39 +08:00
django 只是个 web 框架。http 吞吐慢不慢跟框架有啥关系。。。
luckyrayyy
2020-03-17 11:44:40 +08:00
@gz911122 笨重的 spring boot+tomcat 呐?我怎么记得之前试的也很惨...不比 python 好多少
tailf
2020-03-17 12:17:04 +08:00
700 QPS 一天的 PV 就是 60480000,六千万都不够用吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/653352

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX