私は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秒あたりの多くのリクエストを処理する方法が改善されると考えられています。
:GunicornBjorenで扱うこの複数のコア上で実行するように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です。これはリクエスト/秒に実質的に影響しますか?
はい、ありがとうございました。 os.fork()を使用してコードを更新しました。ベンチマークは現時点で実行されています。 – vin
これに続く:https://github.com/jonashaag/bjoern/blob/master/tests/fork.py しかし、BjoernはまだGunicornの半分の要求を処理しています。これをどのようにデバッグすればよいですか? 2つのプロセスがあります パイソン(27880)─┬─python(27921) └─python(27922) – vin
私は気づいた他の事は、私はSO_REUSEPORTがサポートされていないのLinux 3.2の午前でした。これは要求/秒に実質的に影響を及ぼしますか? – vin