2017-01-07 5 views
0

私はPython WSGIアプリケーションサーバーをベンチマークしています。Python App Servers(Bjoern vs Gunicorn)

次のように私はビョルンを実行している次のような

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 

しかし、私はビョルンがGunicornの半分の多くのリクエストを処理していることを観察しています。私がベンチマーキングしているノードには2つのvCPUがあります。

これまでに公開された多くの記事(例えば、 https://dzone.com/articles/a-performance-analysis-of-python-wsgi-servers-part)によると、BjoernはGunicornと比較して1秒あたりの多くのリクエストを処理する方法が改善されると考えられています。

:Gunicorn

Bjorenで扱うこの複数のコア上で実行するようにBjorenを有効にするhttps://github.com/jonashaag/bjoern/blob/master/tests/fork.py

しかしビョルンはまだ扱いもう少し半分以上の要求が複数のコアを使用しているように見える続く

[email protected]:~/api/src$ ps -U $USER -o pid,psr,comm | grep python 
27880 1 python 
27921 1 python 
27922 1 python 
[email protected]:~/api/src$ ps -U $USER -o pid,psr,comm | grep python 
27880 1 python 
27921 1 python 
27922 0 python 
[email protected]:~/api/src$ ps -U $USER -o pid,psr,comm | grep python 
27880 1 python 
27921 1 python 
27922 1 python 
[email protected]:~/api/src$ ps -U $USER -o pid,psr,comm | grep python 
27880 1 python 
27921 1 python 
27922 1 python 
[email protected]:~/api/src$ ps -U $USER -o pid,psr,comm | grep python 
27880 1 python 
27921 0 python 
27922 0 python 

これをデバッグする方法はありますか?

[UPDATE] 私はSO_REUSEPORTをサポートしていない3.2.0-115-virtualです。これはリクエスト/秒に実質的に影響しますか?

答えて

1

Bjoernは1つのコアを使用していますが、ガンコーンは2つのコアを使用しています。 それゆえ、gunicornが(〜2回)より多くの要求を処理していることは意味があります。

+0

はい、ありがとうございました。 os.fork()を使用してコードを更新しました。ベンチマークは現時点で実行されています。 – vin

+0

これに続く:https://github.com/jonashaag/bjoern/blob/master/tests/fork.py しかし、BjoernはまだGunicornの半分の要求を処理しています。これをどのようにデバッグすればよいですか? 2つのプロセスがあります パイソン(27880)─┬─python(27921) └─python(27922) – vin

+0

私は気づいた他の事は、私はSO_REUSEPORTがサポートされていないのLinux 3.2の午前でした。これは要求/秒に実質的に影響を及ぼしますか? – vin