IIS サーバー上のプロファイル Web アプリケーション
通常、Web アプリケーションのパフォーマンスの問題を特定するには、アプリケーションがすでにサーバー上で実行されている必要があります。 次の表は、アプリケーションのプロファイリングに可能なすべてのオプションをまとめたものです。
長所 | 機能 | |
|---|---|---|
|
| |
|
| |
|
|
ローカルプロファイリング

通常、ローカルプロファイリングは、(開発者の)マシンまたはセキュリティ / パフォーマンス制限を課さないテスト環境でホストされているアプリケーションをプロファイルする必要がある場合に使用されます。
IIS サーバー上にホストされている Web アプリケーションをローカルでプロファイルするには
dotMemory をサーバーにインストールします。
dotMemory をスタンドアロンアプリケーションとして実行する。 dotMemory ホームウィンドウが開きます。
実行構成を追加します ― プロファイルされたアプリケーションの実行方法を dotMemory に指示する構成です:
プロファイルするものを選択する、 新しいプロセスの実行 で、
実行構成の追加 をクリックします。新規実行構成 ウィザードで、 IIS を選択し、 次へ をクリックします。
URL を開く で、プロファイルされたアプリケーションの URL を指定します。 これを行わない場合、dotMemory は見つけた最初の実行中のアプリケーションプールのプロファイリングを開始します。
オプションで、 ブラウザーで で dotMemory が URL を開くために使用するブラウザーを指定できます。
オプションで、 環境変数を設定する で、必要な環境変数を指定します。 各変数は、新しい行で指定する必要があります。
保存 をクリックします。
作成した実行構成が 新しいプロセスの実行 リストで選択されていることを確認してください。
プロファイル方法を選択してください で、プロファイリングオプションを指定します。
割り当てデータを収集する: サンプル化 (オブジェクトサイズの概算データ)と 全部 (オブジェクトの数とサイズの正確なデータ)のいずれかを選択します。 データ収集の詳細
必要に応じて、 他のプロファイリングオプションを指定します。
開始 をクリックします。 これにより、プロファイリングセッションが開始されます。
アプリケーションで特定のワークフローを実行するか(潜在的なメモリの問題を確認する場合)、特定のメモリの問題を再現します。 スナップショットを取得 ボタンを使用してメモリスナップショットを収集します。 プロファイリングセッションを制御する方法の詳細
データを収集したら、プロファイリングされたアプリケーションを閉じるか、 デタッチ ボタンを使用してプロファイラーをデタッチします。
コマンドラインプロファイラーによるプロファイリング

プロファイリングを自動化する必要がある場合、たとえばアプリケーションのプロファイリングを定期的に行うには、コマンドラインプロファイラーが最適です。 別のシナリオとしては、サーバーへのアクセス権が自分になく他の誰かが持っている場合に、その人にプロファイリングツールとバッチファイルを渡すことが挙げられます。
どのように機能するのでしょうか ? つまり、コマンドラインプロファイラーをサーバーにコピーし、プロファイリング中にアプリを実行するか (アプリプールが再起動されます)、実行中のアプリケーションプール w3wp.exe にツールをアタッチします。 その後、特別なコマンドを標準入力に送信してスナップショットを取得できます。
コマンドラインプロファイラーを使用して IIS サーバー上の Web アプリをプロファイリングするには
dotMemory.exe ツールを使用して zip アーカイブをダウンロードし、サーバーにコピー / 解凍します。
現在、メモリスナップショットを取得するための 2 つのオプションがあります。
dotMemory.exe を実行中のアプリケーションプールに接続して即座にスナップショットを取得します。
dotMemory.exe get-snapshot 1234 --save-to-dir=C:\Snapshots1234は、対応する w3wp.exe プロセスのプロセス ID です。
ヒント :ID を取得するには、 IIS マネージャー で必要なサーバーを開きます。 ワーカープロセス ページで、実行中のワーカーとその ID のリストを確認できますプロファイリングでアプリケーションプールを実行します(プールがすでに実行されている場合は再起動されます)。
dotMemory.exe start-iis --trigger-timer=30s --open-url=localhost/myapp --use-browser=Chromeここで、
--open-url=localhost/myappはアプリケーションの URL です。 アプリケーションプールを実行することを選択した場合、即座にスナップショットを取得することはできません。 代わりに、:条件ごとにスナップショットを取得する: たとえば、
--trigger-timer=30sが指定されている場合、スナップショットは 30 秒ごとに取得されますstdin にコマンドを送信してスナップショットを取得する:
##dotMemory["get-snapshot"]プロセス終了時にスナップショットを取得します (たとえば、IIS マネージャーの リサイクル アプリプール)
dotMemory コマンドラインプロファイラーの操作の詳細については、「dotMemory コマンドラインプロファイラーを使用する 」を参照してください。
作成されたスナップショットを dotMemory がインストールされたコンピューターにコピーし、 スナップショットを分析します。
メモリダンプ

何らかの理由でサードパーティ ツールのコピーや実行がサーバーで一切行えない場合どうすればよいでしょうか。 その場合の最終手段はメモリダンプです。 これはさまざまなツールで取得できますが、最もよく使われるのはタスクマネージャー(オペレーティングシステム付属)と Process Explorer です。
メモリダンプを使用して IIS サーバー上の Web アプリケーションをプロファイルするには
サーバーで、タスクマネージャーまたは Process Explorer ツールを使用してメモリダンプを取ります。 タスクマネージャーで 32 ビットアプリケーションのダンプを作成するときは、 C:\Windows\SysWOW64\taskmgr.exe にあるツールの 32 ビットバージョンを必ず使用してください。

作成されたスナップショットを dotMemory がインストールされているコンピューターにコピーし、 インポートダンプ コマンドで開きます。
