アーカイブ

Archive for the ‘インフラ’ Category

ARRのスナップインはWindows Server 2012 R2の管理ツールには表示されない。

時たまサーバーを一気に作る機会があって、以前作った手順書を更新しながら作業しているんですが、OSのバージョンが変わるといろいろ変わってくるところもあります。

以前Windows Server 2008 R2 IIS7.5 と Tomcat 7をARRで連携という記事を投稿しましたが、Windows Server 2012 R2で同じことをやろうとしたらちょっと、、、大分ハマったのでメモ。

あれ?どこ行った?

ARRをWebPIからインストールして、さあARRの設定を!!と思ったら、管理ツールにApplication Request Routing Cacheのアイコンが見当たらない。。。

 

イベント・ログを見るとこんなログが、、、あれ?これ以前見たこと有るぞ?ということでARRを手動でインストールしたけれど、状況は変わらず、、、

IISMANAGER_MODULE_INITIALIZATION_THREW_EXCEPTION

型 "ApplicationRequestRouting" のモジュール "Microsoft.Web.Management.Arr.ArrModule, Microsoft.Web.Management.Arr.Client, Version=7.2.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" の Initialize メソッドが例外を発生させました。

例外:System.IO.FileNotFoundException: ファイルまたはアセンブリ ‘Microsoft.Web.Management.WebFarmClient, Version=7.1.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。
ファイル名 ‘Microsoft.Web.Management.WebFarmClient, Version=7.1.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35′ です。’Microsoft.Web.Management.WebFarmClient, Version=7.1.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’
   場所 Microsoft.Web.Management.Arr.ArrModule.Initialize(IServiceProvider serviceProvider, ModuleInfo moduleInfo)
   場所 Microsoft.Web.Management.Client.Connection.Initialize(WebManagementInfo webManagementInfo)

そっちか!!

Webで似たような事例を探してたら、、、

http://forums.iis.net/t/1159733.aspx?Problems+in+locating+ARR

For the record, this is still broken in IIS8 / ARR 3.0; the Application Request Routing Cache element does not show up in the "Computer Management" MMC window for IIS, but DOES show up in the separate application Internet Information Services (IIS) Manager console.

管理ツールのにスナップインされたIISマネージャーだと表示されないので、個別で表示してみろとのお告げが!!

いた!!

カテゴリー:IIS タグ: ,

dotTrace 6.0, dotMemory 4.2のリモートエージェント

以前dotMemory4.0のリモートプロファイリングについて記事を書きましたが、dotTrace 6.0やdotMemory 4.2ではRemoteAgentの場所が変わっているので探してしまいました。

dotTrace5.*やdotMemory 4.0, 4.1の場合、各プログラムのインストーロフォルダーにRemoteAgentフォルダーがあるのでそれを利用します。例えば下記の場所に有るはずです。

  • dotTrace 5.5: %ProgramFiles(x86)%\JetBrains\dotTrace\v5.5\Bin\Remote
  • dotMemory 4.1: %ProgramFiles(x86)%\JetBrains\dotMemory\v4.1\Bin\Remote
    dotTrace 6.0やdotMemory4.2では、インストーラーが一新された影響で、プログラムの一式が%ProgramFiles(x86)%ではなく、%LOCALAPPDATA%にインストールされるようになったためこんなパスにZIPファイルとして配置されているはずです。
  • dotTrace 6.0:%LOCALAPPDATA%\JetBrains\Installations\dotTrace01\RemoteAgent.zip
  • dotMemory 4.2:%LOCALAPPDATA%\JetBrains\Installations\dotMemory01\RemoteAgent.zip

dotTraceやdotMemoryのコンソールからリモートエージェントに接続する方法はこれまでと変わりありません。dotTraceの場合、上記のZIPファイルへのショートカットのリンクがあるので、ここからもリモートエージェントのフォルダーを参照することができます。

image

プロファイル対象のプログラムを指定するUIと、プロファイリング中のスナップショットを取得したり破棄したりするUIがガラッと変わっていますね。

image image

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関連ツールはひと通り個人で揃えてしまいました。。。出費が痛い。

TFSブランチガイド

ここ2年ほど開発してきたシステムがちょっと前にリリースされました。早速新機能の開発が保守と同時に走り始めました。ソースコードのブランチなんて切らないほうが絶対にいいんですが、そうとも行っていられないのでブランチを作成することに。

TFSでブランチを計画する際にまず目を当したいのが、下の長澤さんのブログで紹介されているTeam Foundation Server 2010ブランチとマージガイドです。TFS 2012は使ったことが無いのですが基本的な考え方は変わらないのでこれでフォローできるはずです。ソース管理にGITなんかを使っていると変わってくるのかな??

分岐ガイドのメインドキュメント(TFS_Branching_Guide_Main_2010_v1.pdf)を読む前に、シナリオのポスター(TFS Branching Guide – Scenarios 2010_20100330.pdf)を見るとわかりやすいです。

とりあえず標準分岐計画を元に分岐シナリオを考えることにします。

カテゴリー:TFS タグ:

TFS Everywareでエラーが出たけれどメッセージが読めない。。。

そんなこんなで、EclipseでC言語を利用した開発なんてのをやっているわけですが、EclipseからTFSのリポジトリーにシェルブしようとしたら、こんなダイアログが表示されてシェルブすることができませんでした。

文字化けして読めない。

image

TFSから帰ってきた文字のエンコーディングが予期したものではなかったのが原因なんだろうけれど、対処方法を調べるのがめんどくさいので、おもむろにFiddlerを起動してTFSとの通信を覗いてみる。

Eclipseからの通信をFiddlerで拾うには、Eclipse側のProxy設定を変更する必要があります。Eclipseのウインドウ→設定→一般→ネットワーク設定から、手動プロキシー構成を選択し、Fiddlerの通信ポートを設定します。

image

Fiddlerの通信ポートがわからない場合は、Fiddler側のTool→Fiddler Option→ConnectionsにあるFiddler listens on portがそれです。

image

で、通信をキャプチャーしてみたらこんなのが表示された。どうも、最新バージョンを取っていないのが問題らしい。そういえばTFSのソース管理オプションで、最新ソースを取っていないとチェックインできない設定にした覚えがある。

image

最新を撮り直して、コンフリクトを解消したらちゃんとシェルブ出来ました。

#だれか、TFS Everywareからのメッセージボックスエンコードの設定方法知教えてください。

メモ:Eclipse 対応 Team Foundation Server プラグイン

カテゴリー:プログラミング, メモ, TFS タグ: ,

Team Explorer Everywhereで特定フォルダーのソース管理を除外する。

仕事でC言語を扱う必要が出てきてなかなかテンションが上りません。しかも開発環境にVisual Studioが利用できなく、更にエミュレーターも準備されていないとかどんだけですかと。最近なんとかEclipseが利用できるようになったらしいですがそれまでは独自開発環境でインテリセンスもないとか、Visual Studioでぬるま湯に使っている身としてはなかなか耐えられそうにありません(開発環境はXPじゃないとリモートデバックもできない模様。。。)。

とりあえずEclipseが利用できそうなので、長沢さんの下記記事を参考に既存のソースファイルをTFSリポジトリーに追加します。Team Explorer Everwhereを入れてEclipseのリポジトリーに既存ソースをチェックインするまではできたのですが、ビルドのたびに変更が入るbinフォルダーまでリポジトリーに登録されてしまいました。。。

TFSの極意 Vol.6 | TFS に Eclipse からアクセス! Team Explorer Everywhere 2010

まぁ当たり前なんですが、TFSリポジトリー上からbinフォルダーを削除しても次回ビルド時には新しくバイナリーファイルがプロジェクトに追加されるので常にbinフォルダーが変更状態でバイナリファイルが追加状態になるという。このあたりはVisual Studioを利用すると勝手にやってくれるんですよね。

image

MSDNのTeam Explorer Everywhere関連のドキュメントを見ると、フォルダーの除外方法が掲載されていました。

バージョン管理からの Eclipse プロジェクト リソースの除外

拡張子やファイル名のパターンなどで除外ファイルを識別できる場合は、設定→チーム→無視するリソースから、除外パターンを追加することでソース管理からの除外ファイルを指定することができます。もしくは、複雑な条件が必要な場合は、tpignoreファイルを作成して除外条件を記述することで除外ファイルを指定することもできるそうです。

image

まぁ、うだうだやってもしょうがないので、できるだけサクッと終わらせよう。。。

カテゴリー:プログラミング, メモ, 雑記, TFS タグ: ,

デスクトップ版Internet Explorer 10の64 bit動作

知らなかったんだけれど、デフォルトの設定ではデスクトップ版のIE10で表示されたページは、32bitのIEで表示されるんですね。ブラウザーのプラグインやActiveXなどを実行する可能性があるデスクトップ版のIEは、とりあえず32bitで動作させたほうが問題は起きにくいだろうという判断なんでしょうか。

デスクトップ側のIEで子プロセスのIEを64bitで開く方法

64bit版が実行されないので悩んでしまいました。

こちらのページも参考になりました。

[IE10]Internet Explorer 10 の 64bit と 32bit

カテゴリー:インフラ, メモ, Windows タグ: