0

我正在对 python WSGI 应用程序服务器进行基准测试。

我正在运行 bjoern,如下所示:

bjoern.run(wsgi_app, host, port)

和 Gunicorn 一样:

gunicorn -w 2 --bind 0.0.0.0:5000 gun_server:wsgi_app --log-level=DEBUG --timeout 90

但是,我观察到 Bjoern 处理的请求数量是 Gunicorn 的一半。我进行基准测试的节点有 2 个 vCPU。

根据迄今为止发表的许多文章(例如) https://dzone.com/articles/a-performance-analysis-of-python-wsgi-servers-part Bjoern 应该在每秒处理许多请求方面做得更好与Gunicorn相比。

按照此操作使 Bjoren 能够在多个内核上运行https://github.com/jonashaag/bjoern/blob/master/tests/fork.py

然而,Bjoern 仍然只处理 Gunicorn 处理的请求的一半多一点

Bjoren 似乎正在使用多个内核:

vin@TEST:~/api/src$ ps -U $USER -o pid,psr,comm | grep python
27880   1 python
27921   1 python
27922   1 python
vin@TEST:~/api/src$ ps -U $USER -o pid,psr,comm | grep python
27880   1 python
27921   1 python
27922   0 python
vin@TEST:~/api/src$ ps -U $USER -o pid,psr,comm | grep python
27880   1 python
27921   1 python
27922   1 python
vin@TEST:~/api/src$ ps -U $USER -o pid,psr,comm | grep python
27880   1 python
27921   1 python
27922   1 python
vin@TEST:~/api/src$ ps -U $USER -o pid,psr,comm | grep python
27880   1 python
27921   0 python
27922   0 python

任何想法如何调试这个?

[更新] 我在不支持 SO_REUSEPORT 的 3.2.0-115-virtual 上。这会大大影响请求/秒吗?

4

1 回答 1

2

Bjoern 使用一个核心,gunicorn 使用两个核心。因此,gunicorn 正在处理(约 2 倍)更多请求是有道理的。

于 2017-01-07T13:10:46.343 回答