アーカイブ

Archive for 2014年4月

dotMemory を利用してリモートコンピューターのメモリープロファイリングを行う

2014年4月25日 3件のコメント

JetBrainsが販売しているdotTraceやdotMemoryといったプロファインリググツールは、パフォーマンスチューニングやメモリー関連の不具合の調査に欠かせないツールですが、こいつらはローカルだけでなくリモートのコンピューターに対してもプロファイリングを行うことができます。

今回はdotMemoryでリモートサーバーのASP.NETプログラムのメモリープロファイリングを行う方法を紹介します。

リモートプロファイリングに関してはdotMemoryのオンラインヘルプに記述があるので合わせて確認してみてください。

dotMemory Web Help > Profiling Process > Starting Remote Profiling Process

http://www.jetbrains.com/dotmemory/webhelp/Starting_Remote_Profiling_Process.html

image

1.プロファイリング用のエージェントを対象のコンピューターにコピーする。

dotMemoryのインストールディレクトリにあるRemoteフォルダーをプロファイリング対象のコンピューターの特定フォルダー(c:\dotMemory\Remoteとか)にコピーします。dotMemoryを標準インストールで入れた場合、Remoteフォルダーはココにあると思います。

%ProgramFiles(x86)%\JetBrains\dotMemory\v4.0\Bin\Remote

image

2.リモートコンピューター側でエージェントを起動する。

管理者権限のあるユーザーでプロファイリングを行いたいPC(or サーバー)にログインし、先ほどコピーしたRemoteフォルダーにあるRemoteAgent.exeを起動します。実行すると下記のURLでプロファイリング用のWebサービスがホストされます。環境によってはファイアーウォールの警告が出るのでRemoteAgentを例外に指定してあげてください。デフォルトでは下記のURLがリモートエージェントによってホストされます。

http://<server&gt;:9000/RemoteAgent/AgentService.asmx

ホストするサービスのポート番号などを変えたい場合は、RemoteAgent.exeをコマンドプロンプトから実行し、コマンドラインスイッチに/pや/port=VALUEを指定してエージェントを起動します。

エージェントが受け入れるスイッチの一覧はRemoteAgent.exe /hで確認できます。

image

3.dotMemoryからリモートプロファイリングを開始する。

dotMemoryをインストールしたPCから先ほどリモートエージェントを起動したPCに対してリモートプロファイルを開始します。dotMemoryを起動し、IIS Applicationのプロファイルを開始してください。

image

プロファイルの設定ダイアログが表示されるので、Profile on remote computerのリンクをクリックして、リモートコンピューターで起動したRemoteAgentのURLを指定します。

image image

エージェントの接続設定が成功したら、Runボタンをクリックしてプロファイルを開始します。

image

4.スナップショットをとって、長期間保存されているメモリーを確認してみる。

プロファイルが開始されたら、右上にあるGet Snapshotボタンをクリックして現在のメモリー状況のスナップショットを取ります。Memory Snapshotsに作成したスナップショットの一覧が表示されるので、確認したいスナップショットを開きHeaps FragmentationのDetailsリンクをクリックしてみましょう。

image image

スナップショットで収集したオブジェクトが表示されます。Group by Generationsでは、世代ごとに確保しているオブジェクトのサマリーを確認できます。LOHのグラフをダブルクリックして、Call Tree Icicle Chartを表示すると、LOHに確保されたオブジェクトを確認することができます。

image image

便利なのでいつのまにやら、jetBrainsの.NET関連ツールはひと通り個人で揃えてしまいました。。。出費が痛い。

広告

Roslyn End User Previewで利用可能になるVBの新しいステートメント

2014年4月4日 1件のコメント

興味半分でVBのデザインノートを除いたら、ずいぶんと新しい構文が増えていたのでちょっと試してみることにしました。

まずは、Roslyn SDKのダウンロードページにある「Upcoming Features in Visual Basic.docx」かをざっと眺めます。今後実装予定の機能については、CodePlexのLanguage feature implementation statusを確認しましょう。

コンテンツとしてはこんなキーワードが出てます。Select Caseステートメントの拡張は幅広くて見慣れないとびっくりするかも。複数行にまたがる文字リテラルやコメントは結構うれしいですね。

  1. Select Caseステートメントの拡張
  2. 読み取り専用の自動実装プロパティー
  3. 複数行にまたがった文字リテラル
  4. yyyy-MM-dd型の日付リテラル
  5. バイナリーリテラル
  6. 数値区切りリテラル
  7. 複数行にまたがるステートメントに対するコメント
  8. バグ修正と小さな変更
    1. XMLドキュメントコメントの修正
    2. TypeOfステートメントでIsNot演算子の利用
    3. パーシャルモジュールとパーシャルインターフェイスのサポート
    4. #Reagion – #End Regionがメソッド内部で定義可能
    5. インターフェイスのReadOnly / WriteOnlyプロパティーを自動実装プロパティーで実装可能
    6. C#との相互運用でOverridesキーワードがある場合のOverloadsキーワードの省略を可能に
    7. Boxing conversions in attribute arguments(???)
  9. C# Previewの変更で検討中の機能
    1. プライマリーコンストラクターによるインスタンスの初期化
    2. Dictonaryの初期化方法の追加(! operatorの追加)
    3. 暗黙的に定義される参照引数(Output キーワードの追加)
    4. Catchブロック内でのAwaitキーワードのサポート

Buildいろいろ、de:codeわくわく、

以前と違いBuildのキーノートがあるから、夜更かししてLiveで見るってこともなくなってきましたが、大型イベント後にいろいろ出てくる情報は面白いですね。Windows 8.1 UpdateにIEのエンタープライズモード、.NETのUniversal applications、Native Developer Previewなどなど、de:codeも行けそうなので今からわくわくしています。

#あっ、Windows 8.1 Updateの検証。。。ドキドキ

メモ

カテゴリー:メモ タグ: ,