マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

初回が遅くなるケースの

  • 事例と
  • トラブルシュートの方法

についてまとめています。

アプリケーションの起動

CLRの周辺

ランタイムのロード

  • .NET Framework 自体のロード
    ファイルシステム・キャッシュ上に乗せるため、
    スタートアップ・スクリプトで.NETプログラムをキックする。
    (コールド スタート → ウォーム スタート化)
  • ウォーム スタート
    ウォーム スタートは、主要なCLRコンポーネント用のページの殆どが、
    既にメモリに読み込まれているときに発生し、貴重なディスク アクセス時間が節約されます。
    このため、マネージ アプリケーションを再度実行すると、初回よりも短い時間で起動します。
  • マネージ・プロセスのロード
    DLLのロード、CGスレッドの起動などがあるため。
    また、WPFの初期化はWindwos Formsより遅い。

プリ・コンパイル

  • IIS(ASP.NET)上のJITコンパイル運用、プリ・コンパイルで高速化可能。

JITコンパイルと、NGen

プロセス起動の周辺

ミドルウェア類のプロセス起動に時間がかかっている可能性があります。

IIS、ASP.NET

ワーカ・プロセス起動からJITコンパイルまで、
以下の対応で解決する可能性があります。

  • IIS6 以前
    定期的にダミーのリクエストを送信するなどの作りこみが必要(添付参照)

DBMS

UI初期化の周辺

UIコントロールの初期化、描画によるチラつき

画面上に表示されるUIコントロールが多い場合のUIコントロールの初期化
(この問題はWPFなどでも解決していないが、描画回数は少なく抑えられる)

  • 参考:WPF?
  • Windows Formsでは以下の方法で描画回数を抑えることができる。

初期化データ取得

  • 画面表示時のデータ取得ラウンド・トリップ
    ファサードパターンなどを取りれておらず、
    クライアント・サーバ間のラウンド・トリップが問題になることがある。

DBMS関連

キャッシュ

DBアプリケーションでは、DBMSの持つデータがキャッシュに上がるまで
I/O処理時間がかかるため、初回起動時の性能が遅く感じられるケースがあります。

この場合、

  • SQLのDMLを流すか
  • UI操作をシミュレーションする類のツール
    のスクリプト、若しくはリクエストを流すか

することで、迅速にキャッシュにデータが上がるようにします。

統計情報の自動作成

統計情報の自動作成によって、初回実行に遅くなることがあるようです。

ネットワーク関連

通信パケットを覘く

基本的に「つながらない!」に記載された方法で確認する。

HTTP

HTTP電文を覘く

基本的に「つながらない!」に記載された方法で確認する。

プロキシの自動検出

プロキシを自動検出している場合に遅い事例がありました。
IEの「インターネットオプション」→「接続」タブ→「自動構成」→「設定を自動的に検出する」

IEの「ネットワークの設定を自動検出する」機能とは
http://www.monyo.com/technical/windows/06.html

SSL

SSLハンドシェークが問題になるケースがあります。

HTTP Keep Alive

HTTP 遅すぎる原因はHTTPSの
SSLハンドシェーク エンタープライズ マイナビニュース
http://news.mynavi.jp/news/2009/11/11/013/index.html

この問題の解決方法にHTTP Keep Alive設定があります。
サーバ・クライアントの双方に、HTTP Keep Alive設定が可能です。

証明書失効リスト (CRL)

証明書失効リスト (CRL)にアクセスできないときに遅い場合があります。

こちらは、SSL(HTTPS)接続に限らず、
デジタル署名されたプログラムの検証等のタイミングでも動作します。

LDAP

LDAPアクセスに使用しているAPI(ADSI)は、

ADのスキーマ更新やDC再起動後に
ADのスキーマキャッシュ情報が
クライアントにダウンロードされる仕様であり、

このトラフィックにより時間がかかることがある。

その他

リトライ処理

svnコマンド

「初回が」と言う訳では無いですが、

  • SubversionクライアントのsvnコマンドをASP.NET(IIS)の
    Network Serviceアカウントから実行すると遅くなるという現象があった。
  • パケット・キャプチャを行うと、
    • svnクライアントがリクエストを受けてから
    • svnのサーバに対してリクエストを投げる間

のクライアント側で遅くなっていることを確認できた。

  • このため、svn.exe内部で問題が起きていると考え、
    ProcessMonitorを使用してプロセス内を確認すると、

 C:\Documents and Settings\Default User\Application Data\Subversion

以下にアクセスし、アクセス拒否+リトライを繰り返している事が確認できた。

  • 解決のため、上記のフォルダに、IIS_WPGグループの
    アクセス許可を付与した所、速く動作するようになった。

Tags: :あるある, :障害対応, :性能, :デバッグ


添付ファイル: filepingWebApp.vbs 564件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-01-31 (木) 11:07:30 (167d)