我正在对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。这会大大影响请求/秒吗?
答案 0 :(得分:2)
Bjoern正在使用一个核心,gunicorn正在使用两个核心。 因此有意义的是,gunicorn正在处理(约2次)更多的请求。