web-dev-qa-db-ja.com

IIS 7つのWebサイトを高速化するにはどうすればよいですか?

複雑なWebアプリのキャッシュを有効にした場合と同様に、圧縮を有効にすると、すぐにパフォーマンスが向上します。

パフォーマンスを改善するために変更できる他の構成オプションは何ですか?新しいサーバーを取得するときに設定する項目の「パフォーマンスチェックリスト」はありますか?

IIS 7以降について質問しています(現在のサーバーはすべてIIS7であるため)

5
Nir

IIS7 +は実際には非常に高速です。 IISを高速化するためにできることはあまりありません;一般に、HTMLで最適化します。 JS、画像、CSS、HTTP、HTTPヘッダー、および場合によってはwebappコード(C#など)。これらの問題はクロスプラットフォームです。もちろん、ユーザーインターフェイスはApacheとIISで異なりますが、知識はほとんど同じです。

Steve Souders 文字通りに書いた ウェブサイトを高速化する方法に関する本 。すばやく簡単に読むことができます。無料の 概要/要求したチェックリスト があり、 YUI Theaterでこれについて話す (最高のプレゼンテーションではありません)があります。

リンクをクリックしていない人のために、元の14のルール(Yahoo!の開発者ネットワークにもあります)は次のとおりです。

  1. HTTPリクエストを少なくする
  2. コンテンツ配信ネットワークを使用する
  3. Expiresヘッダーを追加する
  4. Gzipコンポーネント
  5. スタイルシートを上部に配置する
  6. スクリプトを最下部に配置する
  7. CSS式を避ける
  8. JavaScriptとCSSを外部にする
  9. DNSルックアップを削減
  10. JavaScriptを縮小する
  11. リダイレクトを避ける
  12. 重複するスクリプトを削除する
  13. ETagを構成する
  14. AJAXをキャッシュ可能にする

Steveの2番目の本も優れています ですが、特定のJavascriptとブラウザーの動作に重点を置いています。最初の本はより普遍的に適用可能であり、最初の本で与えられた微調整が最大の影響を及ぼします。

7

上記のJesperのヒントは、静的Webページを高速化するための優れた提案です。

ASP.NETアプリケーションを実行している場合、Webサイトの負荷が原因でパフォーマンスの問題がある場合にできることもあります。

  • サーバーを監視します。 ASP.NETは、PerfMon.exeで監視できる多くのカウンターを公開しています。グローバルリクエストキューカウンターは、リクエストがキューに入れられているかどうかを示します。この数は常に0でなければなりません。
  • データベースやファイルシステムなどの外部リソースへの呼び出しを最適化します。長時間実行されているリクエストはスレッドを拘束し、着信リクエストが処理されないようにします
  • 外部リソースへの呼び出しが長時間実行されている場合は、それらを非同期にすることを検討してください。これにより、リクエストが別のスレッドプールに転送され、新しいリクエストを処理するために元のスレッドがプールに返されます
  • 古いバージョンの.NETのスレッドプールのサイズを増やします。この設定はmachine.configにあります
  • 複数のワーカープロセスを使用するようにIISアプリケーションプールのWebガーデンオプションを構成します(IIS7詳細設定の[最大ワーカープロセス]オプション)。さまざまな設定を試して、環境に最適なものを確認してください。マルチコアマシンは、複数のワーカープロセスをより適切に処理できます。
  • 仮想マシンでは、ホストに割り当ての問題が発生する可能性があるため、サーバーに多くのコアを割り当てないでください。
  • これらすべてを試しても、負荷による問題が引き続き発生する場合は、サーバーのクラスタリングを検討してください。 Windows Serverにはネットワーク負荷分散が組み込まれているため、高価なハードウェアロードバランサーを必要とせずに小さなWebファームを構成できます。 IIS7にはWebファームフレームワークも含まれており、これはApplication Request Routing(ARR)を使用して同じことを実現します。また、サーバーのプロビジョニングも処理します。

これらの問題のいずれかをすばやくWeb検索すると、多くの有益な情報が返されます。

1
Aidan Black

通常、マジック設定はサイト固有です。 IIS7で何を変更すべきかについての適切な質問を見つけるには、何が起こっているのかを監視する必要があります。

パフォーマンスチェーンのどの部分が最も脆弱ですか?

または

アクセス可能な方法できめ細かな可視性を得るために何ができますか?

Jesper Mortensen は絶対に正しい Steveの2冊の本 は素晴らしい読書であり、サイトでの最近の5.5秒から1.8秒の速度向上( webpagetest )を説明している維持します。ログに基づいてシステム全体を安定化することで、実行全体で配信を安定させ、ピーク時に立ち上げることができました(この50%以上はOSレベルでした)。これは、すべてのレベルで監視することなく、2日間の時間枠で行うことはできませんでした。

多くの場合、Steve Soundersの仕事以外のすべてのサイトのチェックリストはありません。解決策を探す前に問題を知る必要があります。

0
Metalshark

IIS7にARRモジュールを実装しているため、webFarmを作成します。ARRはリクエストをディスクにキャッシュし、パフォーマンスを向上させ、大きな違いを生み出します。

Htmlページでは、メディアにマルチサブドメインを使用することもできます。例:

js.yourdomain.com img.yourdomain.com css.yourdomain.com

など..ブラウザファイル、および他のサブドメインごとの同時3接続をダウンロードすると思います。

0
Cédric Boivin