ウェブサイトの最適化——IISとweb.config構成最適化

9940 ワード

最近仕事の中で1つのウェブサイトの最適化の仕事をしなければならなくて、数日総括して、みんなと分かち合います.最適化の構想はフロントエンドの最適化にほかならない、asp.Netページライフサイクル最適化、データアクセス最適化、IISとweb.config構成の最適化は,紙幅が長すぎることを避けるために4つの部分に分かれている.多くのコメントをお願いします.ありがとうございます.
1.ウェブサイトの最適化——フロントエンドの最適化
2.ウェブサイトの最適化——asp.Netページライフサイクル最適化
3.ウェブサイトの最適化——IISとweb.config構成最適化
4.ウェブサイトの最適化——データアクセスの最適化
この1篇はみんなにIISのいくつかの最適化とaspを分かち合います.Netのweb.config構成最適化.
IIS相関最適化

1.IIS最大ワークフロー数の変更
a.次の点を考慮してください.
1.各作業プロセスはシステム資源とCPU占有率を消費する.多くの作業プロセスはシステム資源とCPU利用率の急激な消費を招く.
2.各ワークプロセスには独自のステータスデータがあり、Webアプリケーションがワークプロセスに依存してステータスデータを保存している場合、複数のワークプロセスの使用はサポートされていない可能性があります.
3.リソース競合になり、複数のワークプロセスが同じアプリケーションを実行することによってリソース競合が発生する
b.ISSの最大稼働プロセス数を変更し、アプリケーションプールの処理要求の性能を向上させる
1.IIS 6.0のWebパーク(Web Garden)において、あるアプリケーションプールに対するワークフローの数を指定することで、アプリケーションプール処理要求のパフォーマンスを向上させることができる.サーバの負荷が小さく、追加のワークプロセスが不要な場合、IIS 6.0は一定の時間後(デフォルトでは20分、構成可能)に実際のワークプロセスの数を自動的に削減します.負荷が大きくなると、追加の作業プロセスが必要になり、IIS 6.0は再び作業プロセス数を増加させる.このすべての操作は自動的に行われ、管理者の介入は必要ありません.
2.修正方法は次のとおりです.
サーバーを変更します.Netframeworkのmachine.configの構成
ディレクトリ:C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config
プロセスモデルノードの「allowDefinition」値を「Everywhere」に設定します.
サーバ内のiisの最大ワークフロー数を変更するには、次の手順に従います.
方法:iisアプリケーションプールを右クリック-->プロパティ->[パフォーマンス]タブ->Webパーク->最大ワークフロー数
注意:テスト検証により、サーバーが32(16*2)コア32 Gメモリの場合、5性能が最も優れているように設定します.
(PS:プロセスモデル要素(ASP.NET設定アーキテクチャ)要素は、サーバ(サーバ上のすべてのASP.NETアプリケーションを含む)の処理モデルを構成する.したがって、processModelの設定はMachineにしか置くことができない.configファイルには、Webは使用できません.configファイルの設定を書き換えます.)
2.IISのwebアクセス記録を取り消す
a.IISアクセスレコードを閉じることでweb性能を向上
1.IIS6.0デフォルトでは、WebへのIISアクセスレコードが開きます.記録機能をオンにすると、IISはすべてのIISアクセス記録を細かく忠実に記録する.これらの記録ファイルの内容は、アクセス時間、クライアントIP、どのリンクからアクセスするか、Cookiesなど、非常に複雑であり、Method(メソッド)、UserAgent(ユーザエージェント)なども含まれている.
これらのレコードは、大量のディスク領域を占有するだけでなく、Webサーバのパフォーマンスにも大きく影響します.IISアクセス記録を停止すると5%から8%のWebパフォーマンスが向上すると評価されています.
2.方法:IISマネージャを開き、具体的なウェブサイトにナビゲートし、右クリックして「属性」を選択し、「ホーム」タブの下で「記録アクセス」のチェックを解除すればよい
Web.config構成最適化(生産環境)

1.不要なHttpModulesを取り除く
d.すべてのModulesが必要であるわけではないが、不要なHttpModulesを取り除くことで要求速度を向上させることができる
1.asp.NetデフォルトのHttpModules管理リクエストのパイプラインは、各リクエストを制御します.
例えば、SessionStateModuleは各要求をブロックし、session cookieを分析してHttpContextの適切なsessionをロードする.しかし、すべてのModulesが必要ではありません.例えば、membershipを使用しない場合は、FormsAuthenticationモジュールを構成する必要はありません.Windows認証を使わずにWindowsAuthenticationを構成する必要がない場合は、これらのモジュールはパイプラインに含まれているだけで、各リクエストに必要でないコードを実行します.
2.デフォルトのモジュール定義はmachine.configでは($WINDOWS$Microsoft.NETFramework$VERSION$CONFIG)をWebサイトのweb.configで設定します.これらのパイプラインが不要な場合は、次のように構成されています.
<httpModules> 

<!----> 

<remove name="OutputCache" /> 

<remove name="Session" /> 

<remove name="WindowsAuthentication" /> 

<remove name="FormsAuthentication" /> 

<remove name="PassportAuthentication" /> 

<remove name="RoleManager" /> 

<remove name="UrlAuthorization" /> 

<remove name="FileAuthorization" /> 

<remove name="AnonymousIdentification" /> 

<remove name="Profile" /> 

</httpModules>

2.ページレベルの不要なメカニズムを閉じる
Web.コンフィギュレーションファイルの範囲内のページやコントロールのASP.NET命令デフォルトのenableViewStateプロパティは「true」で、ビューが開きます.このメカニズムを使用しない場合は「false」に設定できます.
デフォルトのautoEventWireupプロパティは「true」、すなわちページイベントを開き、このメカニズムを使用しない場合は「false」に設定できます.
デフォルトのbufferプロパティは「true」で、HTTPレスポンスバッファがオンになります.デフォルトのenableViewStateMacプロパティはfalseで、ページのビューステータスに対してコンピュータ認証チェック(MAC)を実行し、ユーザーの改ざんを配置します.trueに設定すると、パフォーマンスが低下します.デフォルトのvalidateRequestのデフォルトはtrueで、ユーザー入力にサイト間スクリプト攻撃とSQL注入型脆弱性攻撃があることを検証します.一致する場合、HttpRequestValidationException異常が発生します.
3.CustomErrorを非Off状態にする
Web.configのノードは、カスタムエラー情報の情報を定義するために使用されます.このノードには、ModeとdefaultRedirectの2つの属性があります.defaultRedirect属性は、アプリケーションにエラーが発生した場合にリダイレクトされるデフォルトのURLであり、指定されていない場合は一般的なエラーが表示されます.Modeプロパティは必須のプロパティで、3つの可能な値があります.Modeの説明Onは、ローカルおよびリモートのユーザーでカスタムエラー情報が表示されることを示します.Offはカスタムエラー情報を無効にし、ローカルユーザーとリモートユーザーに詳細なエラー情報が表示されます.RemoteOnlyは、ローカル・ユーザーが詳細なエラー情報を表示し、リモート・ユーザーがカスタム・エラー情報を表示することを示します.ここでは,ローカルユーザとリモートユーザの概念を説明する必要がある.aspにアクセスするとNetアプリケーションで使用するマシンとaspをパブリッシュする.Netアプリケーションで使用するマシンが同じマシンである場合にローカルユーザとなり,逆にリモートユーザと呼ぶ.開発デバッグフェーズでは、エラーの検出を容易にするためにOffに設定することを推奨します.デプロイメントフェーズでは、これらの詳細なエラー情報がプログラムコードの詳細を暴露し、ハッカーの侵入を引き起こすことを避けるために、ModeプロパティをOnまたはRemoteOnlyに設定する必要があります.
次のように構成されています.
<customErrors mode=" On " defaultRedirect="Error.html"/>

4.デバッグの無効化
Web.configのノード構成ASP.NETが使用するすべてのコンパイル設定.デフォルトのdebugプロパティは「true」です.つまり、開発段階ではデバッグが許可され、このような構成に問題はありません.ただし、オンラインが正式に導入されると、サポートインタフェースのパフォーマンスに影響を与えるため、プログラムのコンパイルが完了したら「false」に設定する必要があります.
次のように構成されています.
<compilation debug="false" />

5.同時接続構成
接続コンカレント数制限とは、同じipに対して同じdomainに対して開始される最大接続数です.実際、ほとんどのマイクロソフトの製品やコンポーネントにはこの制限があります.一般的にこの数値は2/4です.つまり、デフォルトでは、同じipに対して同じdomainにアクセスし、最大2つの接続が確立されています.デフォルトは2ですが、この値は低すぎます.これは、IPごとに最大2つのリクエストしかあなたのサイトに届かないことを意味し、リクエストが渋滞することを意味します.asp.NetのconnectionManagementノードでは、1つのipがdomainに対して開始する最大接続数を設定できます.
次のように構成されています.
<system.net> 

<connectionManagement> 

<add address="*" maxconnection="100" /> 

</connectionManagement> 

</system.net>

addressはどのdomainに対して、maxconnectionは最大接続数を表します.
6.httpヘッダ情報のASPを削除する.NETバージョンヘッダ
enableVersonHeader:ASPを指定NETがバージョンヘッダを出力するかどうか.この属性を使用して、現在使用するASPを決定する.NETバージョン.本番環境では、このプロパティは必須ではなく、無効にできます.
構成例:
<httpRuntime enableVersionHeader="false" />