fc2ブログ

LND Toolが Lotus Domino Wiki で紹介されています

以前このブログでもLNDツール (Lotus Notes Diagnostics)について紹介しましたが、Notes And Domino Wikiでも紹介の記事が出ました。

Using the LND tool to analyze IBM Lotus Notes and Domino hangs and crashes (Lotus Notes And Domino Wiki)

SEMDEBUG.TXTのファイル表示の話などを主に取り上げましたが、メモリダンプ(show memory dump や server -m で出力されるファイル)のサマリー表示やサーバー上で生成されるDXLファイルの表示(サーバー文書などの情報をまとめています)など重要な情報収集が行えるツールですのでこのような事に興味がある方は一度使ってみるといいのではないかと思います。

関連記事
LND: SEMDEBUG.TXT の時刻表示を変換して見やすくする

Process Monitor でボトルネックを特定する

クライアントの動作が重いとき、ファイルアクセスなのか、レジストリ等のアクセスなのかは問題の切り分けでは非常に重要ですが、その得手作業は大変な作業です。

今日はこのような問題を調査するのに便利なProcess Monitor を紹介します。有名なツールなので知っている方も多いと思います。Process Monitorの最新版はこちらからダウンロードしてください

Process Monitor (Microsoft Windows Sysinternals)

私の記憶が確かなら、Process MonitorはFileアクセスを追っかけるFilemonとレジストリアクセスを追っかけるRegmonと言うツールが一緒になってファイルやレジストリやネットワークを追いかけるツールで、UNIXで言えば、trussのようなツールのイメージでした。
 要するに、詳しい情報は取れるかもしれないけど、何か自分の中で想定要因や仮説が無いと、とてもログ出力が多すぎて役に立たない、と言うイメージでした。

しかし、最近のバージョンはレポート機能が充実してパフォーマンスの問題などのボトルネック特定に非常に便利なレポート機能が数多く含まれていて私も色々な問題の調査に使っています。

今日はこのツールを使って、Notesのスタンダード版の起動の問題を調べてみましょう。
ベンチマークをすることが目的ではないので詳細なテスト条件は重要ではないのですが、一応以下のような設定を行った環境でテストをしています。

テスト条件
・ Notesプリローダー(nntspreld.exe)はmsconfigで事前に無効化
・ アンチウイルスソフトの設定済み(詳細はこちら
・ JVMの設定は設定済み(詳細はこちら
・ サイドバーの表示は無効化
・ Lotus Notes 8.5.2 + Windows XP SP3
・ OS起動直後のNotes起動(いわゆるコールドスタート)

Process Monitorでは初めにログの負荷を下げるためにFilter条件を決めることが重要です。
ここではNotes関連プロセスのログを取りたいので以下のようなFilter 条件で取得します。

Process Monitor フィルター式


今回指定したFilterは以下のような感じです。実質的にはnotes2.exeとnlnotes.exeくらいでいいんじゃないかと思うのですが、念のため。
Process name contains:

notes2.exe
notes.exe
nlnotes.exe
ntaskldr.exe
nsenddiag.exe
nsd.exe
ndyncfg.exe
nfileret.exe


この状態でクリックしてNotesクライアントを起動して、ワークスペースが表示されたくらいでテストを囚虜します。終了するにはメニューから[File]-[Capture Events]のチェックを外すとログが終了します。

このようにして採取したログはどのように解析すればいいのでしょうか?色々な方法がありますが、最近のバージョンのProcess Monitorはレポート機能も非常に充実しているのでその機能を使うのがよいのではないかと思います。始めにFile Summaryを見てみましょう。メニューから[Tools]-[File Summary]を選択して起動します。
以下の画面ショットも参考にしてください。(画像はクリックすると拡大します。)
File Summaryのメニュー

ここではこのようにアクセスしたファイルごとに使用した合計時間を表示してくれます。(Total Time列でソートしました)

File Summary - 出力結果

ファイル名を見てみると *xpdplat_jvm* のようなファイルが多いですが、これはExpeditorクライアントのJVM キャッシュでしょうか。
同様にして[Tools]-[Process Activity Summary] ではプロセスごとにCPU使用率やメモリの使用量などの推移をグラフィカルに表示してくれます。

Process Activity


FileのI/OやCPUの使用率がnotes2.exeに集中している様子が見て分かると思います。

このような分析はNotesクライアント以外でもブラウザの起動が遅い問題を切り分けたり何となくCPU使用率が高いプロセスがどの処理に取られているか辺りを付けたりする上でも非常に有益です。

是非活用してみてください。

Xpages のメモリ使用量を確認する

Xpages は、サーバーで変換され Java Runtime 上で動作しますので、メモリ使用量については Java Runtime のヒープサイズの推移を確認する必要があります。

ヒープダンプを手動で取得するのであれば、以下のサーバーコマンドを定期的に実行して、収集する方法があります。

>tell http xsp heapdump

ただし、heapdump の解析にはツール等を用意する必要があります。

もっと手軽に確認できないか?ということで、XPages Toolbox を使用すると、簡単に確認できます。

XPages Toolboxの導入方法
http://www-10.lotus.com/ldd/ddwiki.nsf/dx/XPages_Toolbox%E3%81%AE%E5%B0%8E%E5%85%A5%E6%96%B9%E6%B3%95

主な機能
•CPUプロファイラ
•バックエンドクラスのプロファイラ
•メモリプロファイラ
•ランタイムの監視
•Javaロギング·グループの管理