Python应用服务器(Bjoern vs Gunicorn)

时间:2017-01-07 12:03:43

标签: python performance webserver gunicorn bjoern

我正在对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与Gunicorn相比,Bjoern应该更好地处理每秒许多请求。

按照此操作使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

任何想法如何调试?

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

1 个答案:

答案 0 :(得分:2)

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