35

私はすぐに ASP.NET MVC ベータ版に夢中になりました。IIS 6 ホスティング環境に展開する際に犠牲にしないと決めたものの 1 つは、拡張子のない URL です。したがって、私はワイルドカード マッピングを追加することを検討していますが、私が読んだすべてのことは、この方法を使用するとパフォーマンスが低下する可能性があることを示唆しています。しかし、実際のベンチマークが見つかりません!

この質問の最初の部分は、そのようなベンチマークをどこで見つけることができるか知っていますか、それともテストされていない単なる仮定ですか?

質問の 2 番目の部分は、100Mbs 接続を介して開発サーバーで jMeter を使用して実行した 2 つの負荷テストに関するものです。

背景情報

私たちのホスティング プロバイダーには、VLAN 用の 1Gbs バックボーンを備えた 4Gbs のバースト可能なインターネット パイプがあるため、オフィス LAN 経由で生成できるものはすべて、ホスティング環境にうまく変換されるはずです。

テスト シナリオは、通常は通過しない ASP.NET ISAPI フィルターを通過するようになったファイルを要求すると、想定されるパフォーマンス ヒットが発生するため、複数の画像/css ファイルをロードすることでした。各テストには、要求スクリプトをそれぞれ 1000 回繰り返して実行する 50 のスレッド (シミュレートされたユーザー) が含まれていました。各テストの結果は以下に掲載されています。

試験結果

ワイルドカード マッピングなし:

サンプル: 50,000
平均応答時間: 428ms
エラー数: 0
1 秒あたりのリクエスト数: 110.1
キロバイト/秒: 11,543

ワイルドカード マッピングの場合:

サンプル: 50,000
平均応答時間: 429ms
エラー数: 0
1 秒あたりのリクエスト数: 109.9
キロバイト/秒: 11,534

両方のテストはウォームで実行され (すべてがメモリ内にあり、初期負荷バイアスはありません)、私の観点からは、パフォーマンスはほぼ均等でした。両方のテストの期間中、CPU 使用率は約 60% で、メモリは問題なく、ネットワーク使用率は約 90 ~ 95% で安定していました。

これは、すべてのコンテンツに対して ASP.NET フィルターを通過するワイルドカード マッピングが実際にはパフォーマンスに影響しないという十分な証拠ですか?

編集:11時間でコメントは1つもありませんか?もっと期待してたのに..笑

4

5 に答える 5

6

クリス、非常に便利な投稿。

パフォーマンスの欠点を示唆する多くの人は、Web アプリケーションで処理されるコードは、標準ワークフローで処理されるコードとは多少異なる/劣っていると推測しています。基本コードの種類は異なる可能性があり、MSIL インタープリターが必要になることは確かですが、多くの場合、ネイティブ ランタイムよりも .NET ランタイムでパフォーマンスが向上することが MS によって示されています。

また、IIS が「何でも屋」である必要があることを考慮することも賢明です。静的ファイルに対しても、あらゆる種類の構成とオーバーライドを許可します。それらのいくつかはパフォーマンス向上 (キャッシング、圧縮) のために設計されており、コードに再実装しない限り実際には失われますが、それらの多くは他の目的のためのものであり、使用されることはありません。必要に応じて (のみ) ビルドする場合は、これらの他の部分を無視することができ、ASP.NET の潜在的な欠点があるとしても、ある種のパフォーマンス上の利点を実現する必要があります。

私の (非 .NET) MVC テストでは、Web フォームよりもかなり (10 倍以上) パフォーマンスが向上しています。静的コンテンツにわずかな影響があったとしても、飲み込むのは難しいことではありません。

あなたのテストで違いがほとんど無視できることには驚きませんが、それがバックアップされているのを見てうれしく思います。

注: IIS の静的ディレクトリからのワイルドカード マッピングを無効にすることができます (私はすべての静的ファイルを /static/(pics|styles|...) に保持しています)。フォルダーをアプリケーションに切り替え、ワイルドカード マッピングを削除し、アプリケーションから元に戻すと、ASP.NET を悩ませることなく IIS によって静的ファイルが処理されます。

于 2009-03-09T15:51:29.190 に答える
4

他にも確認すべき点がいくつかあると思います。

  • .Net ISAPI フィルターを使用しているため、静的アセットを提供するアプリケーションの実行に使用されるスレッドを使用している可能性があります。スレッドのパフォーマンス カウンターを確認しながら、同じ負荷テストを実行します -このリンクを確認してください
  • Microsoft Performance Analyzer の実行中に同じ負荷テストを実行し、レポートを比較します。
于 2008-11-28T13:12:57.177 に答える
1

このようなベンチマークを長い間探していました。ありがとう!

私の会社では、いくつかの Web サイト (標準の Web フォーム、.net1.1 および 2、iis6) でワイルドカード マッピングを行いましたが、システム管理者は、パフォーマンスの問題に気付かなかったと私に言いました。

しかし、サーバーではなくネットワークに重点を置いているようです。ネットワークのボトルネックが原因で、スコアが非常に似ているのではないでしょうか? 考えてただけ...

于 2008-11-27T21:09:30.240 に答える
0

テストのボトルネックはネットワークの使用率のようです。パフォーマンスの低下がCPU使用率にあると予想される場合(それが正しいかどうかはわかりませんが、合理的です)、実行したテストでは気付かないでしょう。

これは多くの変数を含む複雑なシステムであるため、パフォーマンスの低下がないことを意味するわけではありません。これは、シナリオでは、パフォーマンスの低下はおそらく無視できることを意味します。

于 2011-04-10T06:55:23.237 に答える
0

それは非常に印象的な投稿です。ありがとうございます。

また、不要なトラフィックを除外するために常に配置されていたソフトウェアの一部を削除することで、セキュリティとパフォーマンスの問題を評価しています。

あなたの側でさらにベンチマークを行う予定はありますか?

乾杯、

カール。

于 2009-04-03T14:01:43.780 に答える