Notes クライアント障害
ノーツクライアントで発生する障害には様々なものがありますが、代表的なものは以下です。
- クライアントのクラッシュ
- クライアントのハングアップ
- クライアント機能が期待通りの動作をしない
- スクリプトや式言語が期待通りの動作をしない/エラーが発生する
これらの問題の調査には、必要な情報と資料を収集することが重要になります。
また、特定のクライアントユーザーのみで発生するかどうか、再現性の有無などの切り分けも重要な点になります。
対処方法と情報収集
対処方法
ノーツクライアントでクラッシュが発生した場合に、通常は「NSD is running」 と言うメッセージと共にNSD 実行のダイアログが表示されます。OK を押したままノーツクライアントがクリーンアップするまで待って頂けるとNSD 取得終了後、ノーツのプロセスがクリーンアップされ、NSD ログがノーツクライアントのデータディレクトリにある IBM_TECHNICAL_SUPPORT ディレクトリに生成されます。
ハングアップの場合、以下のような手順で手動で NSD を実行し、取得する必要があります。
- コマンドプロンプトでノーツのデータディレクトリに移動します。
e.g cd /D d:\lotus\notes\data - nsd.exe をフルパスで実行します。オプションには -dumpandkill を指定して下さい。
e.g. C:\lotus\notes\nsd.exe -dumpandkill - NSD 取得終了後、ノーツクライアントが自動で終了するので、<データディレクトリ>\IBM_TECHNICAL_SUPPORT ディレクトリにあるファイルをカスタマーサポートまでご送付下さい。
情報収集
サーバーとは異なり、クライアントの調査では、操作手順、発生状況や再現性などの情報が非常に重要となります。問題発生時のそれらの重要な情報を可能な限り収集してください。
また、特定のクライアント環境でのみ発生する問題がかどうかも重要な点になります。
「基本情報/資料の収集」に記載の資料と合わせて、下記の情報/資料を収集します。
問題が発生する操作手順
問題が発生に至る正確な再現手順を把握するために必要です。
再現性、発生状況
原因箇所の切り分け、影響範囲を調査するために有用な情報です。
- 再現性は一定か(毎回同じ操作で発生するか)
- 特定のデータベースでのみ発生する問題か
- クライアントファイル(cache.ndk,desktop6.ndk,bookmark.nsf)を一時的にリネームして再作成しても発生するか
- サーバーのログにエラーは発生していないか
- ノーツ以外の環境設定において負荷の軽減等を実施した場合にも再現するか (スクリーンセーバーを無効、ディスプレイの解像度や色数の変更、他のアプリケーション/常駐アプリケーションの無効化、ドライバーの更新等)
データベースの種類、設計情報
問題が特定のデータベースに関係している可能性がある場合には、詳細について把握する必要があります。
- メール等システムテンプレートを使用したデータベースか
- システムテンプレートから作成したデータベースでのカスタマイズの有無
- 独自に作成したデータベースの場合、設計情報
- アクセス制御リストの権限に依存する問題か
- 特定のフォーム/文書のみに依存する問題か
インストールの状況、新規インストール時の再現性
インストールの違い、新規インストール時の再現性の違いを切り分けるのに有用な情報です。
- 新規インストールした環境での問題かアップグレードした後に発生した問題か
- 新規にインストールした環境でも再現するか
エラーの内容
問題内容を正確に把握するために必要です。
正しいエラーメッセージを記録しておいてください。
エラーの画面ショットでも構いません。
再現を確認するためのサンプルデータベース
お客様のアプリケーションでのみ発生する問題の場合、Lotus Customer Support でも詳細な調査に必要と判断した場合、個人情報などを含まない、設計を簡素化した(特にデータベース単体で稼動可能であるようにして下さい)、サンプルデータベースをご用意下さい。
クライアントの LOG.NSF、NSD ログ/RIP ファイル
クラッシュの場合など、エラーの確認、および前後のクライアントの状態を見極めるのに有用な情報です。
タスクマネージャーの情報
問題発生時のクライアントの状態について確認する場合に有用な情報です。
ハングアップの場合、稼動中のプロセスの画面ショット、CPU 使用率の確認
ノーツクライアントの障害が特定のクライアントやユーザーでのみ発生する場合、障害の発生しないクライアントやユーザーとの違いが重要になります。
通常、その違いは多岐にわたりますが、一般的に確認すべき情報/資料は以下になります。
OS の設定の違い
OS 上の権限による問題など、ノーツクライアントの動作に直接影響する設定を調べるために必要な情報です。
- 特定のパッチに依存するかどうか
- OS 上の権限に差がないかどうか
- Notes クライアントのプログラムディレクリ、データディレクトリのパスに差がないかどうか
ネットワーク環境の違い
ネットワークによる影響を調べるために必要な情報です。
- 他のクライアントとは違うファイアーウォール製品の導入、あるいは違う設定をしているかどうか
- アンチウィルス製品の有無
導入済みアプリケーションの違い
ノーツクライアントと同時に実行するアプリケーションに問題があるかどうか調べるために必要な情報です。
- メール等システムテンプレートを使用したデータベースか
- システムテンプレートから作成したデータベースでのカスタマイズの有無
- 独自に作成したデータベースの場合、設計情報
- アクセス制御リストの権限に依存する問題か
- 特定のフォーム/文書のみに依存する問題か
ノーツ/ドミノの実行権限の違い
原因箇所の切り分け、影響範囲を調査するために必要な情報です。
- データベースに対する権限に依存するかどうか
- ビューに対する権限に依存するかどうか
- 文書に対する権限(読者フィールドなど)に依存するかどうか
ノーツ/ドミノの実行環境の違い
クライアントのインストールタイプによる影響を調べるために必要な情報です。
- マルチユーザーインストールを行っているかどうか
- ローミングユーザー環境かどうか
クライアントの各種ファイル
デスクトップファイルの破損等、特定のクライアントに依存した問題を調査する場合に有用な情報です。
必要に応じて NOTES.INI、NAMES.NSF、CACHE.NDK、DESKTOP6.NDK、BOOKMARK.NSF などを調査します。
問題が発生した設計部分の調査方法
お客様の設計したデータベースもしくはその一部で問題が発生する場合
データベースの動作に疑問がある場合、データベースの設計をデバッグし、スクリプトのプロパティやメソッド、特定の式等、関数単位での動作を確認します。
次に、簡単なサンプルデータベースを作成して再確認します。
Lotus Customer Support へのお問合せ時にデータベースをご送付される場合には、以下のものを送付してください。
- スクリプトのメソッドやプロパティ、特定の式や設計要素の動作を確認するための最低限のデータベース (どこの環境でも再現させられる汎用的データベースにしてください。)
- データベースで問題を確認する一連の手順 (データベースを実行するための設定方法や、問題を発生させるための条件も準備など)
問題が発生した設計部分の調査方法について
お客様が作成したデータベースで問題が発生した場合には、データベースを開発した担当者様に調査をお願いします。
また、標準テンプレートをカスタマイズしているデータベースで問題が発生した場合には、カスタマイズしていない標準テンプレートで同じ現象が発生するかを確認してください。
確認の結果、カスタマイズした部分に問題があると推測できる場合には、カスタマイズした部分を開発担当者様に調査していただきます。
調査により、特定の設計要素やロータススクリプトのメソッドやプロパティの動作に問題があると考えられる場合には、Lotus Customer Support にお問い合わせください。
なお、サポートで現象を把握するために再現用のデータベースを送付していただく場合、疑問がある動作をしている設計要素 (スクリプトのメソッドやプロパティ) の動作確認のために必要最小限の処理手順を送付してください。
<確認作業手順例>
問題:
R5.0.8 で独自にデータベースを作成しました。
ドミノサーバーを R5.0.8 から R5.0.12 に移行しました。その後、エージェントを実行すると、「オブジェクト変数が設定されていません」エラーが時々発生します。R5.0.8 環境ではこのようなエラーになったことはありませんでした。
確認作業:
エージェントやエージェントの式の動作について確認する必要があります。データベース開発者様にて、以下の結果を得るための調査を行います。
1. データベースの設計の何処でエラーが発生するか
2. どのような条件が重なる場合に時々エラーになるか
この例では、調査の結果として以下の部分で問題が発生していました。
(略)
Set db = session.Getdatabase("Server_Name","DB_Name.nsf",False)
If db.IsOpen Then
(略)
1. 上記の「If db.IsOpen Then」の行でエラーになっていました。
2. 上記の"DB_Name.nsf"で指定したデータベースが実在しない場合にエラーになっていました。
次に、このデータベース固有の問題か該当の関数やメソッドの問題であるかを確認します。
エージェントは多くのロジックを含んでいますので、上述の 2 行だけを実行させる最もシンプルなプログラムで問題を再確認します。
例えば、設計が空の新しいデータベースに、以下の 8 行を手動実行エージェントとして作成します。
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.GetDatabase("", "no.nsf", False)
If db.IsOpen Then
Messagebox "DB is open."
Else
Messagebox "DB is not open"
End If
End Sub
エージェントを動作させる前に、ノーツクライアントのデータディレクトリ内に 「no.nsf」 が無いことを確認します。
R5.0.8 でエージェントを実行すると、「DB is not open」が表示されます。
R5.0.12 でエージェントを実行すると、「オブジェクト変数が設定されていません」エラーになります。
このことから、ドミノサーバーのリリースにより IsOpen プロパティの動作が異なることがわかりました。
1. | R5.0.8 のデータベースディレクトリに「no.nsf」が存在しないことを確認し、スクリプトを実行します。「DB is not open」が表示されます。 |
2. | R5.0.12 のデータベースディレクトリに「no.nsf」が存在しないことを確認し、スクリプトを実行します。「オブジェクト変数が設定されていません」エラーが表示されます。 |
この例では、これらの調査により R5.0.11 で行われた修正によってスクリプトの設計式の問題が顕在化したことが判りました。
