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 怎么也有两万,我用不到那么快,但是你也别慢的太夸张啊。。。。本地延迟这么高,干点啥畏首畏尾。。。。

是我哪里配置错了吗?

19562 次点击
所在节点    Django
94 条回复
fuxkcsdn
2020-03-17 14:50:31 +08:00
@Vegetable 你要说 90% 是 php 写的我还信,用 Django 写?真的是 章口就来 啊
WenhaoWu
2020-03-17 14:57:28 +08:00
Django 最主要的是它的 admim 吧,点点点就行太好用了
freakxx
2020-03-17 14:58:04 +08:00
@Vegetable #43
这就吹得有些过分了
freakxx
2020-03-17 14:59:32 +08:00
如果考虑并发的话,可以试下用 channel 走 ASGI 那一套, 搞多几个 worker。
altboy
2020-03-17 15:01:50 +08:00
@yzongyue 大佬说的对
V69EX
2020-03-17 15:02:05 +08:00
所以,现在网上用 python 写 web 服务的,听说不到 2%呀,多数还是 PHP……
Vegetable
2020-03-17 15:14:55 +08:00
@fuxkcsdn 我说了吗?再读一下好吗?实际上大部分网站是静态的好吗
ytmsdy
2020-03-17 15:15:42 +08:00
抬个杠,慢有怎么样?搞得你写出来的应用能到达 800QPS 一样的。
Vegetable
2020-03-17 15:18:47 +08:00
@freakxx 我只是认为网站的性能需求非常低罢了。互联网上的流量分配绝对比现实中的财富分配两极分化更严重。因此我认为完全没什么性能需求的网站超过 90%,这一观点和 Django 完全没什么关系。
Django3.0 已经支持 asgi 了,没必要再用 2.x 时代的方案了。
yzongyue
2020-03-17 15:26:53 +08:00
@altboy 大佬好 又见面了
freakxx
2020-03-17 15:41:55 +08:00
@Vegetable #69


> 互联网上的流量分配绝对比现实中的财富分配两极分化更严重。因此我认为完全没什么性能需求的网站超过 90%,这一观点和 Django 完全没什么关系。
黑人问号

> Django3.0 已经支持 asgi 了,没必要再用 2.x 时代的方案了。
...略下 channels 作者 Andrew Godwin 再来谈这句话吧。
wuwukai007
2020-03-17 16:13:50 +08:00
python 慢的问题,
java vs py 一亿次加运算,慢了好几个数量级
go vs py 计算斐波那契数列差了几个数量级,
项目经理:
这周做一个对爬取的万德债券基金做一个 OLS 回归计算,前台展示一下,
import requests
import numpy as np
```
xxxxxxxxxx
xxxxxxxxxx
return Response(xxx)
```
不妨做一个具体的业务逻辑,不要动不动就来个一亿次加运算,返回个 hello world。
Instagram 月活 10 亿用户,http 请求效率太低是不可能做到的,Instagram 的技术博客里有提到,目前使用 python
并没有成为性能瓶颈,相反是频繁迭代更新的利器。
keepeye
2020-03-17 16:29:40 +08:00
性能重要吗?重要!说不重要的到底是有多么财大气粗?别什么锅都往数据库什么的身上丢
flypi
2020-03-17 16:49:01 +08:00
动态语言写业务代码主要是容易变成💩山吧,做为无状态服务性能再怎么差都可以通过加机器解决,瓶颈还看下游的 DB
LokiSharp
2020-03-17 16:50:12 +08:00
@keepeye #73 如果是 Java 和 C++ 这种性能差别我觉得不重要(忽略内存
如果是 Python。。。这都差了几个数量级了。。。哈哈哈
tlday
2020-03-17 17:00:54 +08:00
@sprite82
@fuxkcsdn
@freakxx
#43 那楼没有说 90%的网站是用 Django 写的,你们需要重新认真读一下。逗号换个位置容易理解一点:"世界上 90%的网站,用 Django 写性能都不会是瓶颈。"。但是逗号就算不换位置,也没有明显的歧义。看了半句就开始了还是有点...
freakxx
2020-03-17 17:10:09 +08:00
@tlday #76

我知道他意思不是说 90%是 django 写,所以我就说,这吹得有些过了。
即使我本身就是 drf 吹。

如果真的只是要杠的话,性能瓶颈是什么,这个才是杠的地方。
justfortest
2020-03-17 20:10:01 +08:00
@flypi 都一样,静态类型没文档也好不到哪去,还不是要一行行看,也不是所有参数都是有明确类型的。
wuwukai007
2020-03-17 21:01:39 +08:00
@justfortest 不是静态类型 传入参数类型不对,编译不通过的。。主要是这个
johnsona
2020-03-17 21:12:21 +08:00
Flask 不一样嘛,fastapi 我没用过,看楼上说比较现代,我要再把 flask 批判一番,flask 就很不现代,你看他那序列化反序列化写的,让我这个菜鸡怎么用。国内用 python 用到性能不够的转 go 了,这就是答案,不用的 django 中间件关掉,什么 session 啦,如果你要自己实现的话,模板啦

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

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

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

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

© 2021 V2EX