• 検索結果がありません。

JDBCスナップによる対処

ドキュメント内 アプリケーション開発ガイド (JDBCドライバ編) (ページ 154-159)

第5章 アプリケーションのコンパイルおよび実行

5.4 アプリケーションのデバッグ

5.4.2 JDBCスナップによる対処

JDBCスナップには、アプリケーション実行時に使用されたJDBC APIごとに、レスポンス性能と入出力データの情報が出 力されます。

レスポンス性能の情報から、API単位で性能コストを算出し、アプリケーションとSymfoware/RDBでの所要時間を分析す ることができます。

また入出力データの情報から、動作異常の原因がどこにあるかを分析することができます。

5.4.2.1 JDBCスナップの採取方法

JDBCスナップの採取は、以下の手順で実行します。

1. 任意のファイルを用意する。

2. 1.で用意したファイル内に実行パラメタ“JDBC_SNAP”を指定する。

3. アプリケーション実行時に、1.で用意したファイル名を指定する。

記述形式

JDBCスナップを出力するには、任意のファイルを用意し、ファイル内に実行パラメタ“JDBC_SNAP”を記述します。

JDBC_SNAP=(出力モード[,スナップファイル名][,出力レベル])

イコール以降を囲むカッコ“()”は、省略可能です。

実行パラメタの右カッコ“)”以降の記述は、コメントとみなします。

実行パラメタにコメントを記述した記述例 JDBC_SNAP=(ON,/tmp/symfo.snp,1) JDBCスナップ

行頭にセミコロン“;”のある行は、コメントとみなします。

キーワード、等号“=”、カッコ“()”、コンマ“,”およびセミコロン“;”の前後には、空白またはタブを記述することができます。

複数記述した場合には、最後に指定された記述が有効になります。

JDBC_SNAP=(ON,/tmp/symfo.snp,1)

JDBC_SNAP=(OFF) ←こちらの記述が有効になります

コンマ“,”の前後で改行することができます。ただしその場合、カッコ“()”を省略することはできません。

JDBC_SNAP=(ON,↓

/tmp/symfo.snp,1) ↓

↓:改行

値の並びで途中の値を省略する場合には、コンマだけを記述します。

JDBC_SNAP=(ON,,1) ←スナップファイル名を省略した例

最後に指定した値の後ろのコンマ“,”は省略することができます。

JDBC_SNAP=(ON) ←出力モード以降を省略した例

アプリケーション実行時の指定形式

アプリケーション実行時に、JDBCドライバの環境変数SYMJDBCENVに、実行パラメタを指定したファイル名を絶対パス で指定します。

java -DSYMJDBCENV=/tmp/symjdbc.env

パラメタの意味

パラメタの詳細について、以下に示します。

表5.2 パラメタの詳細

パラメタ名 範囲 省略値 詳細

出力モード (必須)

ON OFF

OFF ON :トレース機能を利用する場合に 指定します。

OFF:トレース機能を利用しない場合 に指定します。

ファイル名 (省略可能)

任意 symfojdbc_プロセスID_

コネクション番号.snp

出力するトレースファイルのファイル名 を指定します。

出力ファイルはプロセス/コネクション ごとに作成されます。同時に複数のプ ロセス/コネクションを使用するアプリ ケーションの場合には複数の出力ファ イルが作成されます。

ファイル名にはパスと拡張子名を指定 でき、プロセスIDとコネクションを識別 する数値(コネクション番号)が自動的 にファイル名の後に付加されます。パ スが省略された場合は実行するアプリ ケーションのカレントディレクトリに出力 します。

例)指定したファイル名:symjdbc.log 実際のファイル

名:symjdbc_2435_2.log 出力レベル

(省略可能)

1~2 2 出力する情報のレベルとして1または2 を指定します。省略した場合は、2が 指定されたとみなします。出力レベル の指定と出力情報の対応について は、“出力情報”を参照してください。

出力情報

出力レベル1:性能分析用

実行されたJDBC API名とそのAPIの開始時刻、終了時刻および開始から終了までの経過時間が出力されます。

出力レベル2:動作結果確認用

出力レベル1の情報に加えて、実行されたJDBC APIの入出力データが出力されます。

表5.3 出力レベルと出力情報

情報 出力レベル:1 出力レベル:2

開始時刻 ○ ○

API名 ○ ○

スレッド名 ○ ○

環境情報およびオプショ

ン情報 - ○

コネクションを識別する数

値(コネクション番号) ○ ○ 文を識別する数値(文番

号) ○ ○

SQL文 ○(注) ○

入力データ - ○

出力データ - ○

エラー情報 ○ ○

終了時刻(経過時間) ○ ○

○:出力あり

-:出力なし

注)PreparedStatementインタフェースまたはCallableStatementインタフェース使用時に出力されます。

出力情報詳細

出力情報の詳細を以下に示します。

表5.4 出力情報と出力形式

出力情報 出力形式

開始時刻 JDBC-API START YYYY/MM/DD HH:MM:SS.sss

API名 API-NAME : インタフェース名API名

スレッド名 API-THREAD : スレッド名 コネクションを識別する

数値(コネクション番号)

API-CONNECTION :数値

文を識別する数値(文番 号)

API-STATEMENT : 数値

環境情報およびオプショ ン情報

url type=(symford/symfold) host=(ホスト名)

port=(ポート番号)

database=(データベース名) schema=(デフォルトスキーマ名) maxconnections=(最大コネクション数) lang=(言語)

ctuneparam=(オプション文字列) codeselect=(OS/UTF-8)

出力情報 出力形式 javaconverter=(コンバータ名) など

SQL文 SQL文は文番号の後ろまたは入力データ域に出力されま

す。

・ 文番号の後ろに出力される場合 例)API-STATEMENT : 3 (SELECT * FROM GENERAL.EMPLOYEE)

・ 入力データ域に出力される場合

出力レベル1の場合の例)1: SELECT * FROM GENERAL.EMPLOYEE

出力レベル2の場合の例)“入力データが文字またはバイナリ の場合”を参照してください

入力データ API-INPUT-VARIABLE 入力データ

・ 入力データが文字またはバイナリの場合 例)1: ...パラメタ番号

0000: 5B CC 58 EB 90 1A ...(1) 富士通 ...(2)

(1):UNICODEの値をバイナリで出力

(2):OSのコードで文字列を出力

・ 入力データが数値の場合 例)1: 100

出力データ API-OUTPUT-VARIABLE 出力データ

出力形式は入力データと同様です。

エラー情報 出力データ域に出力されます。

終了時刻(経過時間) JDBC-API END YYYY/MM/DD HH:MM:SS.sss

(HH:MM:SS.sss) ()内は経過時間

5.4.2.2 JDBCスナップの分析方法

出力されたJDBCスナップの分析方法について説明します。

JDBCスナップには、以下の形式で情報が出力されます。

ここでは出力レベル2を例に説明します。

出力例

JDBC-API START 2007/04/17 09:25:55.693 ...開始時刻 API-NAME : getConnection ...API名 API-THREAD : main

API-INPUT-VARIABLE

url type=symfold ...環境情報およびオプション情報 host=

port=26551 database=COMPANY schema=GENERAL

maxconnections=2147483647 lang=JA

ctuneparam=

API-OUTPUT-VARIABLE 1: 2

JDBC-API END 2007/04/17 09:25:55.833 (00:00:00.140) ...終了時刻(経過時間) JDBC-API START 2007/04/17 09:25:55.833

API-NAME : Connection.prepareStatement API-THREAD : main

API-CONNECTION : 2 ...コネクション番号 API-INPUT-VARIABLE ...入力データ 1:

0000: 00 55 00 50 00 44 00 41 00 54 00 45 00 20 00 45 UPDATE E 0010: 00 4D 00 50 00 4C 00 4F 00 59 00 45 00 45 00 20 MPLOYEE 0020: 00 53 00 45 00 54 00 20 00 4E 00 41 00 4D 00 45 SET NAME 0030: 00 3D 00 3F =?

API-OUTPUT-VARIABLE ...出力データ 1: 3

JDBC-API END 2007/04/17 09:25:55.993 (00:00:00.160) JDBC-API START 2007/04/17 09:25:55.993

API-NAME : PreparedStatement.executeUpdate API-THREAD : main

API-CONNECTION : 2

API-STATEMENT : 3 (UPDATE EMPLOYEE SET NAME=?) ...文番号(SQL文) API-INPUT-VARIABLE

API-OUTPUT-VARIABLE

SQLState : S1000 ...エラー情報 SQLCode : 1044

SQLMessage: 必要な入力パラメタが指定されていません JDBC-API END 2007/04/17 09:25:56.043 (00:00:00.050)

APIごとの所要時間の算出方法

JDBCスナップの情報を利用して、JDBCドライバのAPIごとに、所要時間を算出することができます。

[計算式]

APIごとの所要時間=API_ENDの終了時刻の後ろに出力された、経過時間

アプリケーションの所要時間とSymfoware/RDBの所要時間の算出方法

アプリケーションの所要時間とSymfoware/RDBの所要時間は、以下の方法で算出することができます。

1. アプリケーション全体の所要時間を算出するロジックを、アプリケーション内に記述します。

2. 実行パラメタ“JDBC_SNAP”の出力レベルに1を指定して、アプリケーションを実行します。このとき算出された、ア プリケーション全体の所要時間を、aとします。

3. 2.で出力されたJDBCスナップの情報から、APIごとの経過時間の合計を算出します。算出された合計時間を、bと

します。

4. 実行パラメタ“JDBC_SNAP”を指定しないでアプリケーションを実行します。この時のアプリケーション全体の所要 時間をcとします。

[計算式]

アプリケーションの所要時間 =a-b

Symfoware/RDBの所要時間 =c-アプリケーションの所要時間

ドキュメント内 アプリケーション開発ガイド (JDBCドライバ編) (ページ 154-159)