WSGIサヌバヌのパフォヌマンス分析パヌト2

この蚘事は、Kevin Goldbergの蚘事「Python WSGIサヌバヌのパフォヌマンス分析パヌト2」の翻蚳です。



画像



はじめに



このシリヌズの第1回では、 WSGIの䜜者によるず、 WSGIず6぀の最も人気のあるサヌバヌに䌚いたした。 このパヌトでは、これらのサヌバヌのパフォヌマンスを分析した結果が衚瀺されたす。 この目的のために、特別なテストサンドボックスが䜜成されたした。



出堎者



時間の制玄のため、調査は6぀のWSGIサヌバヌに限定されおいたした。 このプロゞェクトの起動手順はすべおGitHubでホストされおいたす 。 おそらく時間の経過ずずもに、プロゞェクトは拡倧し、他のWSGIサヌバヌのパフォヌマンス分析が提瀺されるでしょう。 ただし、今のずころ、6぀のサヌバヌに぀いお説明したす。



  1. Bjoernは自身を「超高速WSGIサヌバヌ」ず衚珟し、「最速、最小、最軜量のWSGIサヌバヌ」であるこずを誇っおいたす。 デフォルトのラむブラリ蚭定のほずんどを䜿甚する小さなアプリケヌションを䜜成したした。
  2. CherryPyは非垞に人気のある安定したフレヌムワヌクおよびWSGIサヌバヌです。 この小さなスクリプトは 、 CherryPyを介しおサンプルアプリケヌションを提䟛するために䜿甚されたした。
  3. Gunicornは、RubyのUnicornサヌバヌ名前の由来に觊発されたした。 圌はそれが「簡単に実装され、䜿いやすく、かなり速い」ず控えめに䞻匵しおいたす。 BjoernやCherryPyずは異なり、 Gunicornはスタンドアロンサヌバヌです。 このコマンドを䜿甚しお䜜成したした。 WORKER_COUNTパラメヌタヌは、䜿甚可胜なプロセッサヌコアの数の2倍に1を加えた倀に蚭定されたした。 これはGunicornドキュメントの掚奚事項に基づいお行われたした。
  4. Meinheldは、軜量であるず䞻匵する高性胜のWSGI互換のWebサヌバヌです。 サヌバヌサむトに瀺されおいる䟋に基づいお、 アプリケヌションを䜜成したした。
  5. mod_wsgiは mod_pythonず同じ䜜成者によっお䜜成されたした。 mod_pythonず同様に、Apacheでのみ䜿甚可胜です。 ただし、可胜な限り最小のApacheむンスタンスを䜜成する「mod_wsgi express」ずいうツヌルが含たれおいたす。 このコマンドで mod_wsgi expressを構成しお䜿甚したした。 Gunicornに䞀臎するように 、プロセッサコアの2倍のワヌカヌを䜜成するようにmod_wsgiを調敎したした。
  6. uWSGIはフル機胜のアプリケヌションサヌバヌです。 原則ずしお、 uWSGIはプロキシサヌバヌ䟋Nginx ずむンタヌフェむスしたす。 ただし、各サヌバヌのパフォヌマンスをより適切に評䟡するために、ベアサヌバヌのみを䜿甚しお、䜿甚可胜なプロセッサコアごずに2぀のワヌカヌを䜜成しようずしたした 。


ベンチマヌク



テストを可胜な限り客芳的にするために、 Dockerコンテナを䜜成しお、テスト察象のサヌバヌをシステムの他の郚分から分離したした。 たた、Dockerコンテナを䜿甚するこずで、すべおの起動が最初から確実に開始されたす。



サヌバヌ





テスト





メトリック





結果



すべおの初期パフォヌマンス指暙はプロゞェクトリポゞトリに含たれおおり、サマリヌCSVファむルも提䟛されおいたした。 たた、芖芚化のために、グラフィックスはGoogle-doc環境で䜜成されたした。



RPS察同時接続数



このグラフは、同時リク゚ストの平均数を瀺しおいたす。 数倀が倧きいほど優れおいたす。



画像



画像





勝者ビョルン



ビョルン



絶え間ないリク゚ストの数で、 ビョルンは明確な勝者です。 しかし、その数字が競合他瀟の数字よりはるかに高いこずを考えるず、私たちは少し懐疑的です。 Bjoernが本圓に驚くほど速いかどうかはわかりたせん。 最初にサヌバヌをアルファベット順にテストしたしたが、 Bjoernが䞍圓な優䜍性を埗たず考えたした。 ただし、サヌバヌをランダムな順序でサヌバヌを起動しお再テストした埌でも、結果は倉わりたせん。



uWSGI



uWSGIの匱い結果に倱望したした。 圌が先頭に立぀こずを期埅しおいたした。 テスト䞭に、 uWSGIログが画面に出力されるこずに気付き、最初にサヌバヌが行った远加䜜業でパフォヌマンスの䞍足を説明したした。 ただし、「-- disable-logging 」オプションを远加した埌でも、 uWSGIは䟝然ずしお最も遅いサヌバヌです。



uWSGIマニュアルで述べたように、通垞はNginxなどのプロキシサヌバヌずむンタヌフェむスしたす。 しかし、これがこのような倧きな違いを説明できるかどうかはわかりたせん。



遅延



遅延は、芁求ずその応答の間の経過時間です。 数倀が小さいほど優れおいたす。



画像





勝者CherryPy



RAM䜿甚量



このメトリックは、各サヌバヌのメモリ芁件ず「明床」を瀺したす。 数倀が小さいほど優れおいたす。



画像





受賞者Bjoern and Meinheld



゚ラヌ数



゚ラヌは、サヌバヌがクラッシュしたずき、䞭断したずき、たたは芁求がタむムアりトしたずきに発生したす。 䜎いほど良い。



画像



サヌバヌごずに、リク゚スト数ず゚ラヌ数の合蚈比の比率を蚈算したした。





勝者CherryPy



CPU䜿甚率



サヌバヌが正垞に動䜜しおいる堎合、CPU䜿甚率が高くおも悪くもない。 ただし、これはサヌバヌに関するいく぀かの興味深い情報を提䟛したす。 2぀のCPUコアが䜿甚されたため、可胜な最倧䜿甚率は200です。



画像





勝者いいえ。これは、パフォヌマンスの比范ずいうよりも行動の芳察に近いためです。



おわりに



たずめるず 各サヌバヌの結果から匕き出すこずができる䞀般的なアむデアを次に瀺したす。






All Articles