開発サーバーをセットアップしていますが、Monoを使用してASP.NETページを提供するようにセットアップしたいと考えています。私はチェロキーとモノ(http://www.cherokee-project.com/doc/cookbook_mono.html)の使用を計画しており、誰かがUnixベースのスタックとWindowsベースのスタックを比較してパフォーマンステストを行ったかどうか疑問に思いました。
開発サーバーをセットアップしていますが、Monoを使用してASP.NETページを提供するようにセットアップしたいと考えています。私はチェロキーとモノ(http://www.cherokee-project.com/doc/cookbook_mono.html)の使用を計画しており、誰かがUnixベースのスタックとWindowsベースのスタックを比較してパフォーマンステストを行ったかどうか疑問に思いました。
回答:
Mono / Linuxと.NET / Windowsのワークロードをテストするときは、ランタイム環境だけでなく、それ以外にもさまざまな機能があることを覚えておく必要があります。
LinuxのパフォーマンスがWindowsよりも優れている領域があります(ほとんどのIOおよびネットワーク操作は、同等のCプログラムの方が高速になる傾向があります)。同時に、.NETには、より高度なガベージコレクタとより高度なJITコンパイラがあります。
クラスライブラリに関しては、実際に使用しているコードパスによって異なります。JacksonHが以前の投稿で述べたように、1つの実装では最適化されているが、他の実装では最適化されていないコードパスをヒットすることができます。
ASP.NETワークロードでは、デフォルトのセットアップではすべての受信リクエストが単一の「ワーカー」プロセスにルーティングされ、mod_monoとチェロキーは同様のアプローチを使用することを覚えておく必要があります。
(ソース:mono-project.com)
少なくともApacheでは、アプリケーションのワークロードを複数のワーカーに分割できるメカニズムをサポートしています。これにより、インプロセスロックが回避され、各ワーカーにスレッドプール全体が提供されるため、高負荷時に役立ちます。
(ソース:mono-project.com)
このセットアップの構成方法の詳細は、次の場所にあります。
これはちょっと答えがありません。しかし、ここで本当の答えはありません。残念ながら、これはアプリケーションに大きく依存します。あなたのアプリは、Monoがたまたまうまく行っている何かにぶつかるか、不十分に実装されているか、いくつかのバグがあるものを多用している可能性があります。これは、MonoがIISのX倍の速度で動作することはありません。
私の提案は、アプリを取得して、2つの異なるEC2インスタンス(1つはWindows、もう1つはMono)にデプロイし、そこでテストを行うことです。Monoインスタンスで重大な問題を見つけた場合は、報告してください。改善に努めます。
とはいえ、個人的な経験から、Mono aspxは非常に優れたパフォーマンスを発揮することがわかります。