トランザクションとして実行するプロシージャ中に乱数を使用するとエラー「java.lang.NullPointerException」が発生する
| 対象 | TG | 登録日 | 2011/03/21 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGはトランザクションとしてストアドプロシージャを実行することができますが、プロシージャの引数にTGの乱数を組み込んだ場合、エラー「java.lang.NullPointerException」が発生し、仮想クライアント(Agent)がデータベースから切断します。 |
|||
| 原因 | |||
|
TGの内部処理の実装方法に問題があります。TG内部ではSQL文用のオブジェクトとプロシージャ用のオブジェクトを分けて管理していますが、乱数へ値をセットする処理が常にSQL文用のオブジェクトを参照しようとするためです。 |
|||
| 対策・回避策 | |||
|
プロシージャの引数に乱数を使用しなければ、本問題は発生しません。 |
|||
| 修正 | |||
|
暫定パッチを作成しました。以下の手順にてパッチを入手・適用頂くことができます: ******************************************************************************** ■パッチの入手・適用方法 ※TGのバージョン「0.92」がインストールされていることを前提とします。 ※パッチの適用は、TGおよびTGCを停止させた状態で行ってください。 ①以下のURLより、パッチをダウンロードしてください: http://www.transactiongenerator.com/v2/content-j/download/tg092_patch_2_1.html ②ダウンロードしたZIPファイルを展開すると、以下ふたつのファイルが作成されます。 - tg.jar : 151,949Bytes - tgc.jar : 303,293Bytes ③上記ファイルを既存のTGおよびTGCのバイナリに上書きします。 パッケージ「tg092wj-setup.exe」を使用している場合、該当フォルダは 「C:\Program Files\Transaction Generator\0.92\」です。 ④TGCを起動し、TGとTGCのログファイルを確認します(該当ファイルはtgc.exeと同一 ディレクトリに存在します)。起動時のメッセージに「0.92 patch 2」と表示 されていることを確認してください。 ※tg.log =============================================================== XXX XXX XX XX:XX:XX JST 2011 Transaction Generator 0.92 patch 2.1 has initiated. =============================================================== ※tgc.log =============================================================== XXX XXX XX XX:XX:XX JST 2011 TGC - TG Controller - 0.92 patch 2 has initiated. =============================================================== 以上でパッチの適用は完了です。 ******************************************************************************** |
|||
ひとつのTransactionに複数のSQL文を登録した際、エラー「java.lang.ArrayIndexOutOfBoundsException」が発生することがある
| 対象 | TG | 登録日 | 2011/03/20 |
|---|---|---|---|
| 事象の詳細 | |||
|
ひとつのトランザクション内に複数のSQL文を登録した際、以下のエラーが発生し、TGがダウンすることがあります:
###############################################################################
※画面上の表示
ERROR : Transaction generator has terminated with unexpected errors. See logfile.
※ログファイルの内容
ERROR : Transaction generator has terminated with unexpected errors...
======================================================================
java.lang.ArrayIndexOutOfBoundsException: 21
at tg.modifyTransaction(tg.java:9919)
at tg.Config(tg.java:9754)
at tg.reloadConfigBody(tg.java:6098)
at tg.CommandNet(tg.java:2789)
at tg.mainRoutine(tg.java:1009)
at tg.main(tg.java:333)
======================================================================
###############################################################################
|
|||
| 原因 | |||
|
TGの内部処理の実装方法に問題があります。TGでは各トランザクションに20個ぶんのSQL文のバッファを保持していますが、SQL文の構成方法によっては本バッファが不足し、エラー「java.lang.ArrayIndexOutOfBoundsException」が発生します。 具体的には、ひとつのSQL文であっても複数の乱数が組み込まれているような場合、TG内部では4ステップの処理に分割され、4つ分のバッファを消費します。そしてこのバッファの消費量が20以上になったとき、エラーが発生します。 例) 1行のSQL文であっても、内部的に4つのバッファを消費する。 TG> show config transactions -- TRANSACTION CONFIGURATION -------------------------- Registerd Transactions Total : 1 TRANSACTION No : 1 TRANS_NAME : SELECT0 TRANS_TYPE : NORMAL AVERAGE : 80/80 SQL No.1 : select * from test where id = :NDATA and ddata = :DDATA ←※1行 TG> show config transactions details -- TRANSACTION CONFIGURATION -------------------------- Modified Transactions Total : 1 TRANSACTION No : 1 TRANS_NAME : SELECT0 TRANS_TYPE : NORMAL AVERAGE : 80/80 SQLNo.1 : select * from test where id = ? and ddata = ? ←※4ステップに分割される SQLNo.2 : setint=:NDATA (VALNo:1) ←※ SQLNo.3 : setstr=:DDATA (VALNo:3) ←※ SQLNo.4 : execstmt ←※ TG> |
|||
| 対策・回避策 | |||
|
TGの内部バッファの消費量を20未満になるようTransaction(SQL文)を調整することで、本事象を回避することができます。 |
|||
| 修正 | |||
|
暫定パッチを作成しました。以下の手順にてパッチを入手・適用頂くことができます: ******************************************************************************** ■パッチの入手・適用方法 ※TGのバージョン「0.92」がインストールされていることを前提とします。 ※パッチの適用は、TGおよびTGCを停止させた状態で行ってください。 ①以下のURLより、パッチをダウンロードしてください: http://www.transactiongenerator.com/v2/content-j/download/tg092_patch_2_1.html ②ダウンロードしたZIPファイルを展開すると、以下ふたつのファイルが作成されます。 - tg.jar : 151,949Bytes - tgc.jar : 303,293Bytes ③上記ファイルを既存のTGおよびTGCのバイナリに上書きします。 パッケージ「tg092wj-setup.exe」を使用している場合、該当フォルダは 「C:\Program Files\Transaction Generator\0.92\」です。 ④TGCを起動し、TGとTGCのログファイルを確認します(該当ファイルはtgc.exeと同一 ディレクトリに存在します)。起動時のメッセージに「0.92 patch 2」と表示 されていることを確認してください。 ※tg.log =============================================================== XXX XXX XX XX:XX:XX JST 2011 Transaction Generator 0.92 patch 2.1 has initiated. =============================================================== ※tgc.log =============================================================== XXX XXX XX XX:XX:XX JST 2011 TGC - TG Controller - 0.92 patch 2 has initiated. =============================================================== 以上でパッチの適用は完了です。 ******************************************************************************** |
|||
マルチサーバ・モード使用時、TGCからスレーブ・サーバの登録処理を行った際、例外"java.lang.NullPointerException"または"org.eclipse.swt.SWTException: Widget is disposed"が発生し、TGCが異常終了する
| 対象 | TGC | 登録日 | 2010/11/06 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGCのメニュー「TG > Configure TG...」の「Multi Server」タブにて、スレーブ・サーバの登録処理を行い"OKボタン"を押下した後、以下のようなエラーメッセージを出力し、TGCが異常終了することがあります: =============================================================================== java.lang.NullPointerException at tgc.setServerInformation(tgc.java:17743) at tgc$messageWriter.run(tgc.java:18368) at org.eclipse.swt.widgets.Display.runTimer(Unknown Source) at org.eclipse.swt.widgets.Display.messageProc(Unknown Source) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(Unknown Source) at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source) at tgc. |
|||
| 原因 | |||
|
TGCの内部処理の実装方法に問題があります。スレーブ・サーバが登録された際、TGCは該当サーバ用にメッセージバッファを準備しますが、この準備が整う前に、該当バッファを参照しようとすることがあります。 |
|||
| 対策・回避策 | |||
|
TGCを使用せず、TGを『コマンドライン・モード』で使用した場合、本現象は発生しません。 |
|||
| 修正 | |||
|
暫定パッチを作成しました。以下の手順にてパッチを入手・適用頂くことができます: ******************************************************************************** ■パッチの入手・適用方法 ※TGのバージョン「0.92」がインストールされていることを前提とします。 ※パッチの適用は、TGを停止させた状態で行ってください。 ①以下のURLより、パッチをダウンロードしてください: http://www.transactiongenerator.com/v2/content-j/download/tgc092_patch_1.html ②ダウンロードしたZIPファイルを展開すると、以下のファイルが作成されます。 - tgc.jar : 302,810Bytes ③上記ファイルを既存のTGCのバイナリに上書きします。 パッケージ「tg092wj-setup.exe」を使用している場合、該当フォルダは 「C:\Program Files\Transaction Generator\0.92\」です。 ④TGCを起動し、ログファイル「tgc.log」を確認します(該当ファイルはtgc.exeと同一 ディレクトリに存在します)。起動時のメッセージに「0.92 patch 1」と表示されます。 =============================================================== XXX XXX XX XX:XX:XX JST 2010 TGC - TG Controller - 0.92 patch 1 has initiated. =============================================================== 以上でパッチの適用は完了です。 ******************************************************************************** |
|||
1行の長さが4096byteを超える文字列を受け取った際、TGがハングしたような状態になる
| 対象 | TG | 登録日 | 2010/10/09 |
|---|---|---|---|
| 事象の詳細 | |||
|
サーバモードで動作しているTGが、TG Controller(もしくはTera Term等の端末エミュレータ)から1行の長さ4096Byte以上の入力を受け取った際、ログファイル(tg.log)に以下のようなメッセージを出力し、ハングしたような状態になります(より厳密には、TGは複数のJavaスレッドで構成されており、コマンド入力を受け付けるスレッド「Terminal」がダウンします)。
===============================================================================
Sat Oct 09 01:31:18 JST 2010
Terminal No[1] Recieved following errors :
java.lang.ArrayIndexOutOfBoundsException: 4096
Additional information :
- recievedSize:1
- currentPntr:0
- echoPntr:0
- cmndPntr:4096
Sat Oct 09 01:31:18 JST 2010
Now terminal No[1] closed.
===============================================================================
|
|||
| 原因 | |||
|
TGの内部処理方法に問題があります。TGは入力されたコマンドを1行づつ処理するつくりとなっており、改行コードを受け取るまでは入力をバッファに保持します。このバッファサイズが4096byteであるため、1行の長さが4096byteを超える入力を受け取った際、オーバーフローが発生します。 |
|||
| 対策・回避策 | |||
|
TGを『コマンドライン・モード』で使用した場合、本現象は発生しません。これはコマンドライン・モードのTGは、コマンド入力を受け付けるスレッド(Terminal)を生成せず、TG本体で入力を受け付けるためです。 |
|||
| 修正 | |||
| 現在修正の方法を検討中です。 | |||
LIST型VARIABLEに195を超える値を登録すると、エラー「AgentID:X EROR: Recieved Exception : java.lang.ArrayIndexOutOfBoundsException」が発生する
| 対象 | TG | 登録日 | 2010/03/10 |
|---|---|---|---|
| 事象の詳細 | |||
|
リスト型変数(「LIST_INTEGER」もしくは「LIST_STRING」)に195を超える値を登録すると以下のエラーが非常に高い頻度で発生します。 =========================================================================== 23:36:51 AgentID:0 EROR: Recieved Exception: java.lang.ArrayIndexOutOfBoundsException: 748 23:36:51 AgentID:0 EROR: attempt to reconnect (ERROR_RECONNECT_COUNT:2/5, ERROR_RECONNECT_WAIT:10000 msec). 23:36:52 AgentID:6 EROR: Recieved Exception: java.lang.ArrayIndexOutOfBoundsException: 355 23:36:52 AgentID:6 EROR: attempt to reconnect (ERROR_RECONNECT_COUNT:3/5, ERROR_RECONNECT_WAIT:10000 msec). 23:36:52 AgentID:1 EROR: Recieved Exception: java.lang.ArrayIndexOutOfBoundsException: 960 23:36:52 AgentID:1 EROR: attempt to reconnect (ERROR_RECONNECT_COUNT:3/5, ERROR_RECONNECT_WAIT:10000 msec). =========================================================================== |
|||
| 原因 | |||
|
TGの内部処理方法に問題があります。TG ver 0.92では、LIST型変数に登録可能な値の数の最大値を1024に変更しましたが、実際には195を超える値を登録した場合、正常に処理することができません。 |
|||
| 対策 | |||
|
値の設定数が195個以内である場合、本現象は発生しません。 |
|||
| 修正 | |||
|
暫定パッチを作成しました。以下の手順にてパッチを入手・適用頂くことができます: ******************************************************************************** ■パッチの入手・適用方法 ※TGのバージョン「0.92」がインストールされていることを前提とします。 ※パッチの適用は、TGを停止させた状態で行ってください。 ①以下のURLより、パッチをダウンロードしてください: http://www.transactiongenerator.com/v2/content-j/download/tg092_patch_1.html ②ダウンロードしたZIPファイルを展開すると、以下のファイルが作成されます。 - tg.jar : 151,017Bytes ②上記ファイルを既存のTGのバイナリに上書きします。 パッケージ「tg092wj-setup.exe」を使用している場合、該当フォルダは 「C:\Program Files\Transaction Generator\0.92\」です。 ③TGを起動します。起動時のメッセージに「0.92 patch 1」と表示されます。 =============================================================== Transaction Generator 0.92 patch 1 XXX XXX XX XX:XX:XX JST XXXX =============================================================== 以上でパッチの適用は完了です。 ******************************************************************************** |
|||
TGの接続(セッション)確立処理がシーケンシャルに処理される
| 対象 | TG | 登録日 | 2009/12/13 |
|---|---|---|---|
| 事象の詳細 | |||
|
仮想クライアント(Agent)のデータベースへの接続(セッション)確立処理は、TGの仕様としてパラレルで処理することを想定していましたが、実際には本処理がシーケンシャルに実行されます。具体的には以下の動作となります: =============================================================================== ■TGの仕様として想定されていた動作 ※パラメータ「SESSIONS」が「10」に設定されていることとします。 ・コマンド「CONNECT」発行 ⇒10個のAgentがすべて同時に接続処理を開始 ■実際の動作 ※パラメータ「SESSIONS」が「10」に設定されていることとします。 ・コマンド「CONNECT」発行 ⇒ひとつめのAgentが接続処理を開始し、該当処理を完了 ⇒ふたつめのAgentが接続処理を開始し、該当処理を完了 ⇒(同様の処理を10番目のAgentまで繰り返し) =============================================================================== (補足) TGではひとつひとつのAgentが独立して接続を確立します。従って10個のAgentを生成した場合、データベースへの接続数は10になります。複数のAgent間でひとつの接続を共有する動作は行いません。 |
|||
| 原因 | |||
|
TGの内部処理方法に問題があります。Agent(実体はJavaのスレッドです)がパラレルにデータベースへの接続を確立する場合、JDBCの接続メソッドとして"Driver.connect()"メソッドを使用する必要がありますが、実際には"DriverManager.getConnection()"メソッドが使用されており、このため接続確立処理がシーケンシャルに実行されます。 |
|||
| 対策 | |||
|
ありません。 |
|||
| 修正 | |||
| Version 0.92にて修正を実施しました。 新パラメータ「MAX_CONCURRENT_CONNECTIONS」を参照してください。 | |||
ジョブ(JOB_TYPE:SQL)実行後、該当ジョブのセッションが不正に残った状態になる
| 対象 | TG | 登録日 | 2009/09/15 |
|---|---|---|---|
| 事象の詳細 | |||
|
ジョブ(JOB_TYPE:SQL)の実行後、該当ジョブが正常に終了しているにもかかわらず、不正にセッションが残った状態となります。以下に本現象が発生した際のエラーのサンプルを示します。 本サンプルではデータベースに「SQL Server」を使用し、ログイン「test」を作成し、該当ログインを使用するジョブを実行完了後、該当ログインを削除しようとするとエラーが発生しています。
===============================================================================
TG> execute job 1
>> Execute job No : 1 [ 0.CREATE_DATABASE ]
- JOB_NAME : 0.CREATE_DATABASE
- JOB_TYPE : SQL
- EXEC_FILE : e:\__\java\_lastr~2\jobs\$TGSCRIPT0.tgs
SQL No.0 : create database testdb
System altered.
SQL No.1 : create login test with password='test', DEFAULT_DATABASE=testdb
System altered.
↑※ログイン「test」作成
SQL No.2 : commit
Commit complete.
SQL No.3 : call master.sys.sp_addsrvrolemember('test','sysadmin')
Procedure executed.
Specified job successfully executed.
TG> execute job 2
>> Execute job No : 2 [ 1.BUILD_SCHEMA ]←※本ジョブは、ログイン「test」を使用して実行
- JOB_NAME : 1.BUILD_SCHEMA
- JOB_TYPE : SQL
- EXEC_FILE : e:\__\java\_lastr~2\jobs\$TGSCRIPT1.tgs
SQL No.0 : create user test for login test with default_schema=testdb
System altered.
SQL No.1 : commit
Commit complete.
Specified job successfully executed.
TG> execute job 3
>> Execute job No : 3 [ 3.DROP_SCHEMA ]←※本ジョブは、ログイン「test」を使用して実行
- JOB_NAME : 3.DROP_SCHEMA
- JOB_TYPE : SQL
- EXEC_FILE : e:\__\java\_lastr~2\jobs\$TGSCRIPT2.tgs
SQL No.0 : drop user test
System altered.
SQL No.1 : commit
Commit complete.
Specified job successfully executed.
TG> execute job 4
>> Execute job No : 4 [ 4:DROP_DATABASE ]
- JOB_NAME : 4:DROP_DATABASE
- JOB_TYPE : SQL
- EXEC_FILE : e:\__\java\_lastr~2\jobs\$TGSCRIPT3.tgs
SQL No.0 : drop login test
com.microsoft.sqlserver.jdbc.SQLServerException: ユーザーが現在ログインしている
ので、ログイン 'test' を削除できませんでした。 ←※ログイン「test」の削除に失敗
SQL No.1 : commit
Commit complete.
SQL No.2 : drop database testdb
com.microsoft.sqlserver.jdbc.SQLServerException: データベース "testdb" は現在
使用中なので削除できません。
Error occured while executing a job.
TG>
===============================================================================
|
|||
| 原因 | |||
|
TGの内部処理方法に問題があります。 |
|||
| 対策 | |||
|
ありません。本現象が発生した場合にはTGの再起動を行うことで、該当セッションをクリアすることが可能です。 |
|||
| 修正 | |||
| Version 0.91にて修正を行いました。 | |||
コマンド「show status transactions」の結果が不正となる
| 対象 | TG | 登録日 | 2009/07/16 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGのコマンド「show status transactions」の結果の一部が不正となります。該当するのは「ERROR(ERROR per second)」と「TPS(Transaction Per Second)」です。結果は常に"0"となります。 =============================================================================== TG> show status transactions -- TRANSACTION STATUS -------------------------------- GENERAL ~~~~~~~ - CURRENT TIME : Thu Jul 16 00:08:00 JST 2009 - TARGET AGENT STATUS : ACTIVE CURRENT AGENT STATUS (SUMMARY) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - CONNECTED : 30/30 - DISCONNECTED : 0/30 - TERMINATED : 0/30 ERROR and TPS ~~~~~~~~~~~~~ - ERROR(ERROR per second) : 0 ←※該当箇所 - TPS(Transaction Per Second) : 0 ←※該当箇所 TG> =============================================================================== |
|||
| 原因 | |||
|
TGの内部処理方法に問題があります。 |
|||
| 対策 | |||
|
ありません。該当コマンドを使用せず「monitor」コマンドを使用してトランザクション統計情報を取得してください。 |
|||
| 修正 | |||
| Version 0.91にて修正を行いました。 | |||
TGC(GUI)の画面にて「TPS Monitor」タブをクリックするとTGCが異常終了する
| 対象 | TG Controller | 登録日 | 2009/02/21 |
|---|---|---|---|
| 事象の詳細 | |||
|
Linux環境にてTGCを起動し「TPS Monitor」タブをクリックすると以下のエラーメッセージが出力され、TGCが異常終了することがあります:
===============================================================================
Exception in thread "main" org.eclipse.swt.SWTException: Unable to load graphics
library [Cairo is required] (java.lang.UnsatisfiedLinkError: no swt-cairo-gtk-3448
or swt-cairo-gtk in swt.library.path, java.library.path or the jar file)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.graphics.Device.checkCairo(Unknown Source)
at org.eclipse.swt.graphics.GC.initCairo(Unknown Source)
at org.eclipse.swt.graphics.GC.setAntialias(Unknown Source)
at Equalizer$7.paintControl(Equalizer.java:417)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Control.gtk_expose_event(Unknown Source)
at org.eclipse.swt.widgets.Composite.gtk_expose_event(Unknown Source)
at org.eclipse.swt.widgets.Canvas.gtk_expose_event(Unknown Source)
at org.eclipse.swt.widgets.Widget.windowProc(Unknown Source)
at org.eclipse.swt.widgets.Control.windowProc(Unknown Source)
at org.eclipse.swt.widgets.Display.windowProc(Unknown Source)
at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method)
at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(Unknown Source)
at org.eclipse.swt.widgets.Display.eventProc(Unknown Source)
at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at tgc.
|
|||
| 原因 | |||
|
TGCを実行しているLinux環境に、グラフィックライブラリである「cairo」が導入されていないためです。 TGCはバージョン0.90より、グラフ描写のために「cairo」の機能を使用しています。「TPS Monitor」タブをクリックした際、グラフ表示のためにcairoのAPIがコールされ、プログラムが異常終了します。 |
|||
| 対策 | |||
|
Linux環境にcairoをインストールしてください。なお、本ライブラリの使用にあたってその他のライブラリ(libpixman, directfb)もあわせて導入が必要になることがあります。 ※関連サイト:http://cairographics.org/ |
|||
TGをコマンドラインモードで実行中にVERBOSEモードを使用するとTGが異常終了する
| 対象 | TG | 登録日 | 2009/01/03 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGをコマンドラインモード(command-line mode)で実行中にVERBOSEモードの操作(コマンド:verbose on/offなど)を行うと、TGが以下のエラーメッセージを出力し、異常終了します。 =============================================================================== ERROR : Transaction generator has terminated with unexpected errors. See logfile. =============================================================================== |
|||
| 原因 | |||
|
TGCの内部処理方法に問題があります。 |
|||
| 対策 | |||
|
ありません。コマンドラインモードでVERBOSEコマンドを使用しないか、もしくはTGをコマンドラインモード以外(server mode)で実行すれば本現象は発生しません。 |
|||
| 修正 | |||
| Version 0.86にて修正を行いました。 | |||
TGCからTGへの接続確認後、TGへの接続が不正になる
| 対象 | TG Controller | 登録日 | 2009/01/03 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGCのメニュー「TG > Specify and connect to TG」を選択し、「Specify and connect to TG」画面にて"TRY"を使用してTGへの接続確認を行った後、"OK"を押下しTGに接続すると以下のメッセージが表示され、TGCとTG間の接続が不正になる場合があります。 =============================================================================== :TGSrvMsgBgn:0:CMND:TGCN:00000001:0:TGSrvMsgBgn:0:EVNT:INFO:00000064:Input linefeed string of the current terminal was set to "0d0a".:TGSrvMsgBgn:0:EVNT: INFO:00000065:Output linefeed string of the current terminal was set to "0d0a". TG - Transaction Generator - [ Version 0.86 ] Sat Jan 03 12:16:53 JST 2009 logged in. TG> =============================================================================== |
|||
| 原因 | |||
|
TGCの内部処理方法に問題があります。 |
|||
| 対策 | |||
|
ありません。「Specify and connect to TG」画面にて"TRY"機能を使用しなければ、本現象は発生しません。 |
|||
| 修正 | |||
| Version 0.86にて修正を行いました。 | |||
TGCで使用されているTGウェブサイトのURLが誤っている
| 対象 | TG Controller | 登録日 | 2008/12/30 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGCの以下の機能にて使用されているTGウェブサイトのURLが誤っています。
|
|||
| 原因 | |||
|
TGのウェブサイトのURLが変更になったためです。該当URLは2008/11/29に「www.tgnr.net」から「www.transactiongenerator.com」に変更になりました。 |
|||
| 対策 | |||
|
ありません。手動にて上記新URLを参照してください。 |
|||
| 修正 | |||
| Version 0.86にて修正を行いました。 | |||
TGC終了時にTGが終了しない
| 対象 | TG Controller | 登録日 | 2008/12/21 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGC終了時にTGを併せて終了させるよう(メッセージ「Now terminating TG Controller. Terminate TG server together? > YES」)選択しても、TGが終了しない場合があります。 |
|||
| 原因 | |||
|
TGCの内部処理方法に問題があります。TGC終了時にTGを併せて終了させる場合、TGCはTGにコマンド「terminate」を発行してから終了するよう設計されていますが、コマンド発行前にTGCが終了してしまうことがあります。 |
|||
| 対策 | |||
|
TGCのメニュー「TG > Shutdown TG」を選択してTGを終了させてから、TGCを終了させてください。 |
|||
| 修正 | |||
| Version 0.86にて修正を行いました。 | |||
TGC起動時にエラー「java.lang.UnsatisfiedLinkError: no swt-win32-3236」が発生する
| 対象 | TG Controller | 登録日 | 2008/10/18 |
|---|---|---|---|
| 事象の詳細 | |||
|
Linux環境にてTGCを起動する際、以下のエラーが出力されることがあります:
===============================================================================
Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-win32-3236 in
java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at org.eclipse.swt.internal.Library.loadLibrary(Library.java:123)
at org.eclipse.swt.internal.win32.OS.<clinit>(OS.java:18)
at org.eclipse.swt.widgets.Display.<clinit>(Display.java:125)
at tgc.<init>(tgc.java:585)
at tgc.main(tgc.java:581)
===============================================================================
|
|||
| 原因 | |||
|
誤ったSWTライブラリ(Windows用のswt.jar)が使用されているためです。本件は製品の仕様です。 |
|||
| 対策 | |||
|
Linux環境用のSWTライブラリを使用してください。 |
|||
Agentのステータス情報やトランザクションのスループット情報を確認する際にTGCがハングしたような状態になり、CPU使用率が高騰する
| 対象 | TG | 登録日 | 2008/06/04 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGCのメニュー「Agent > Show agent status」や「Monitor > Throughput statistics > Show details」(TGをコマンドラインモードで利用している際には、コマンド「show status agent」、「show throughput details」)を実行する際、TGがハングしたような状態となり、TGを実行しているホストのCPU使用率が高騰する場合があります。 |
|||
| 原因 | |||
|
TGの内部処理方法に問題があります。該当コマンドをTGが処理する場合、全Agentのステータス情報の集計を行いますが、Agentの接続数(パラメータ:SESSIONS)が多い場合、この集計処理に非常にCPUを消費する場合があります。 |
|||
| 回避策 | |||
|
ありません。ただし、パラメータ「SESSIONS」の値が小さい場合や、TGを実行しているホストのCPU性能が高い場合、本現象は表面化しません。 |
|||
| 修正 | |||
| 現在問題原因の詳細を調査中です。 | |||
TGとTGCのコンフィグレーションの同期時にTGCが一時的にハングしたような状態となる
| 対象 | TG Controller | 登録日 | 2008/06/04 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGとTGCとのコンフィグレーションの同期時にTGCが下記のメッセージを出力し、一時的にハングしたような状態となります。 ※"TG Console"の出力例) TG> reload config Loading configuration file... .OK. Registered transactions:0 , variables:0 , jobs:0 , slave servers:0 TG> freeze TGC messagebuffer overflowed. Agents was temporarily freezed. TG> unfreeze Agents was restarted. TG> ※"System Event Monitor"の出力例) TGC Too many message recieved. freeze agent activity temporary. |
|||
| 原因 | |||
|
TGとTGC間のメッセージの処理方法に問題があります。TGバージョン0.84より、TGはTGCとのコンフィグレーションの同期時に、全Agentのステータス情報をTGCに通知するようになりましたが、Agentの接続数(パラメータ:SESSIONS)が多い場合、TGCのメッセージ処理に時間がかかってしまい、一時的にTGCがハングしたような状態になります。 |
|||
| 回避策 | |||
|
本現象はTGをコマンドラインモードで使用する場合には発生しません。またTGCを使用している場合に本現象の回避策はありませんが、パラメータ「SESSIONS」の数値が小さい場合(もしくはTGCを実行しているホストのCPU性能が高い場合)、本現象は表面化しません。 |
|||
| 修正 | |||
| Version 0.85にて修正を行いました。 | |||
パラメータ「JDBC_URL」使用時、HOSTNAMEやSID_NAMEが指定されていない旨のエラーが発生する
| 対象 | TG | 登録日 | 2008/03/14 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGC(TG Controller)の「Configure Agents...」画面の「Database」タブにて、チェックボックス「Edit "JDBC URL" Manually」をチェックし、JDBC URLを直接編集した場合、以下のエラーが発生することがあります。 ※エラーの出力例) =================================================================== TG> reload config Loading configuration file... .Partially Failed. Error[1] : Parameter "HOSTNAME" is not specified. Error[2] : Parameter "SID_NAME" is not specified. Registered transactions:2 , variables:2 , jobs:0 , slave servers:0 TG> =================================================================== |
|||
| 原因 | |||
|
TGのパラメータ入力値のチェックルーチンに問題があります。本来、JDBC URLを直接編集した場合、HOSTNAMEやSID_NAMEの指定は不要であるにもかかわらず、TGがこれをエラーと判定してしまうためです。 |
|||
| 回避策 | |||
|
TGのコンフィグレーションファイルである"tg.conf"のDATABASEフィールドを直接手動で編集し、パラメータ"HOSTNAME"と"SID_NAME"にダミーの文字列を指定してください。 ※設定例)
##################################################################
<DATABASE
JDBC_DRIVER = ORACLE
HOSTNAME = _DUMMY ←※該当箇所
SID_NAME = _DUMMY ←※該当箇所
JDBC_URL = jdbc:oracle:thin:@(DESCRIPTION =
(ADDRESS_LIST =
(LOAD_BALANCE = yes)
(ADDRESS = (PROTOCOL = TCP)(HOST = racinst01)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = racinst02)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = testsrvc)
)
)
>
##################################################################
なお、TGC使用時は設定変更を行った際に"tg.conf"が上書きされてしまうため、コマンドラインモードでのTGの利用をお勧めします。 |
|||
| 修正 | |||
| Version 0.84にて修正を行いました。 | |||
int型のカラムを持つテーブルへのアクセス時にエラー「ERROR: current transaction is aborted...」が発生する
| 対象 | TG | 登録日 | 2008/02/09 |
|---|---|---|---|
| 事象の詳細 | |||
|
負荷がけ対象のデータベースにPostgreSQLを使用しており、以下の条件に該当する場合、トランザクション実行中に「ERROR: current transaction is aborted, commands ignored until end of transaction block」が発生することがあります。
|
|||
| 原因 | |||
|
TGが使用しているJDBCのAPIに問題があります。TGではSQL文中のパラメータのバインド("?"への値のセット)にすべて「setString」メソッドを使用しています。PostgreSQL 8.0よりも前のドライバは、setStringの値に数値を指定した場合でも内部的に型変換(数値⇒文字列)を行っていましたが、8.0以降ではこの動作を行わなくなりました。 |
|||
| 回避策 | |||
|
PostgreSQL 8.0よりも以前のJDBCドライバを使用する |
|||
| 修正 | |||
| Version 0.84にて修正を行いました。 | |||
TGCの「Configure agents...」編集画面にて、各種名前(乱数名・トランザクション名・Job名)に関する誤った重複エラーが出力される
| 対象 | TG Controller | 登録日 | 2008/02/02 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGCの「Configure agents」画面の「Variables」・「Transactions」・「Jobs」タブでは、それぞれ乱数名・トランザクション名・Job名など各種名前の編集を行うことができますが、編集中に実際は重複していないにもかかわらず、名前の重複エラーが出力されることがあります。 ※エラーの出力例) - The same variable name exists. |
|||
| 原因 | |||
|
TGCの内部処理ロジックの問題のためです。「Configure agents...」画面にて各種名前の編集後「Cancel」を選択し、再度「Configure agents」画面を開いた際、キャンセルされたはずの編集内容がバッファ内に不正に残ってしまうことがあります。 |
|||
| 回避策 | |||
|
再度TGCのコンフィグレーションファイル「*.tgp」をロードしなおすか、TGCの再起動を行ってください。 |
|||
| 修正 | |||
| Version 0.84にて修正を行いました。 | |||
パラメータ「DRIVER_TYPE」にOCIまたはOCI8を指定した場合、Agentがデータベースに接続できない
| 対象 | TG Controller | 登録日 | 2008/01/17 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGCの「Configure agents...」画面の"Database"タブにて、下記の設定を行っている場合、
Agentが以下のエラーメッセージを出力し、データベースへの接続に失敗することがあります。 =========================================================================== TG> reload config Loading configuration file... .Partially Failed. Error[1] : Parameter "HOSTNAME" is not specified. Error[2] : Parameter "SID_NAME" is not specified. Registered transactions:0 , variables:0 , jobs:0 , slave servers:0 TG> connect ERROR : Failed to connect to database because of following errors. ERROR : Parameter "USERNAME" is not specified. ERROR : Parameter "PASSWORD" is not specified. TG> =========================================================================== |
|||
| 原因 | |||
|
TGCからTGへのコンフィグレーションデータの同期時、指定が不要なパラメータについても情報を同期しようとするためです。 |
|||
| 回避策 | |||
|
TGのコンフィグレーションファイルである「tg.conf」を手動で編集し、該当する行を削除してください。 ※編集例
===================================================
#### Database Field.
<DATABASE
JDBC_DRIVER = ORACLE
DRIVER_TYPE = OCI
TNSNAMES = testdb
HOSTNAME = ←※該当行
PORT = 1521 ←※該当行
SID_NAME = ←※該当行
>
===================================================
なおTGCから再度情報の同期を行った場合、上記行は復元されてしまうことに注意して下さい。 |
|||
| 修正 | |||
| Version 0.83にて修正を行いました。 | |||
TGCのログが肥大化する
| 対象 | TG Controller | 登録日 | 2007/09/14 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGCのログファイルである「tgc.log」が以下のエラーメッセージを出力し、急激に肥大化することがあります。 =========================================================================== XXX XXX XX XX:XX:XX XXX XXXX ERROR occured at deleteOverflowedlines. java.lang.IllegalArgumentException: Index out of bounds ================ OFFSET : XXX SYSRET : 0d0a LINES : XXXX MxLINES : XXXX =========================================================================== |
|||
| 原因 | |||
|
TGCでは「TG Console」や「TPS Monitor」などの画面のバッファサイズが設定値(メニュー"TGC" > "Setup TGC..."の"Scroll buffer"にて指定)を超えた場合、超えたぶんの行を削除する処理を行いますが、この処理に問題があります。 |
|||
| 回避策 | |||
|
ありません。なお、本現象が発生した場合でも、TGそのものは動作し続けているため、TGCを再起動し、再度TGに接続してください。 |
|||
| 修正 | |||
| 問題原因の詳細を調査中です。 | |||
CONNECT ALL/DISCONNECT ALLコマンド実行時、SlaveサーバのAgentの処理完了を待たずにTGのプロンプトが戻される
| 対象 | TG | 登録日 | 2007/09/03 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGのコマンド「connect all」、「disconnect all」は、"sessions"パラメータで指定されたすべてのAgentがデータベースへ接続(切断)するまでプロンプトを戻さない動作を想定していますが、MultiServerモードを使用している場合、SlaveサーバぶんのAgentの接続(切断)動作が無視されます。 |
|||
| 原因 | |||
|
TGCの内部処理ロジックの問題のためです。 |
|||
| 回避策 | |||
|
本現象はMultiServerモード使用時にのみ発生します。従って、MultiServerモードを使用していなければ、本現象は発生しません。 |
|||
| 修正 | |||
| Version 0.82にて修正を行いました。 | |||
TGC(GUI)が異常終了する #2
| 対象 | TG Controller | 登録日 | 2007/06/10 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGCの「Configure TG...」画面や「Configure agents」画面にて"TG Servers"や"Variables"などのツリー画面編集時、TGCが異常終了することがあります。 |
|||
| 原因 | |||
|
TGCの内部処理ロジックの問題のためです。 |
|||
| 回避策 | |||
|
本現象は、ツリー内のオブジェクトをCTRLキーを押したままクリックし、何もオブジェクトが選択されていない状態になった場合に発生します。よって、CTRLキーを使用した操作を行わなければ、本現象は発生しません。 |
|||
| 修正 | |||
| Version 0.80にて修正を行いました。 | |||
MultiServer構成でMasterServerのCPU使用率が高騰する
| 対象 | TG | 登録日 | 2007/05/05 |
|---|---|---|---|
| 事象の詳細 | |||
|
MultiServer構成にて、MasterServerとSlaveServer間で接続/切断(MasterServer機能のON/OFF、 Synchronize configuration...の実行)を繰り返すと、MasterServer側のCPU使用率が高騰します。 |
|||
| 原因 | |||
|
TGのメッセージ処理ロジックに問題があります。MasterServerはSlaveServerとの接続確立後、SlaveServerからのメッセージ受信を別スレッドで処理しますが、切断時にこのスレッドの開放を正常に行わないためです。 |
|||
| 回避策 | |||
|
本現象はMultiServer構成使用時のみ発生します。MasterServerのCPU使用率が高騰した際にMasterServerの再起動を行うことで、本現象を回避することができます。 |
|||
| 修正 | |||
| Version 0.72にて修正を行いました。 | |||
Listenerモードで動作するTGが受信したコマンドを不正に処理する場合がある
| 対象 | TG | 登録日 | 2007/05/04 |
|---|---|---|---|
| 事象の詳細 | |||
|
Listenerモードで動作するTGが、TGCとのコンフィグレーションの同期(Synchronize configuration...)時などに異常終了・ハングアップすることがあります。また、本現象はMultiServer構成における SlaveServerでも同様に発生します。 |
|||
| 原因 | |||
|
Listenerモードで動作するTGのメッセージ処理ロジックに問題があり、TGCもしくはMasterServer(MultiServer構成時)から受信したコマンドを正常に処理できない場合があるためです。 |
|||
| 回避策 | |||
|
以下のすべての条件を満たしてTGを利用する際、本現象は発生しません。
|
|||
| 修正 | |||
| Version 0.72にて修正を行いました。 | |||
TGCからローカルのTGを起動する際、不正なメッセージが表示される
| 対象 | TG Controller | 登録日 | 2007/04/12 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGCからローカルのTGを起動する際、TGの起動メッセージが不正に表示されることがあります。 ※正常時 =========================================================================== TG - Transaction Generator - [ Version 0.72 ] Thu Apr 12 22:09:30 JST 2007 Loading Oracle JDBC driver... OK. Checking specified address & Port is possible to use... .OK. Now TG is running in "Slave Mode". - Listening Address : 0.0.0.0 - Port : 11111 TG - Transaction Generator - [ Version 0.72 ] Thu Apr 12 22:09:35 JST 2007 logged in. TG> =========================================================================== ※異常時(「:TGSrvMsg...」の部分が不正出力です) =========================================================================== TG - Transaction Generator - [ Version 0.72 ] Thu Apr 12 22:09:30 JST 2007 :TGSrvMsgBgn:0:CONS:INFO:00000030:Loading Oracle JDBC driver... :TGSrvMsgBgn:0:CONS:INFO:00000001:.:TGSrvMsgBgn:0:CONS:INFO:00000005:OK. :TGSrvMsgBgn:0:CONS:INFO:00000002: Checking specified address & Port is possible to use... .OK. Now TG is running in "Slave Mode". - Listening Address : 0.0.0.0 - Port : 11111 TG - Transaction Generator - [ Version 0.72 ] Thu Apr 12 22:09:35 JST 2007 logged in. TG> =========================================================================== |
|||
| 原因 | |||
| TGCのメッセージ処理ロジックに問題があり、TGからの制御コードをそのまま画面(TG Console)に出力してしまうことがあるためです。 | |||
| 回避策 | |||
| 該当メッセージを無視してください。 | |||
| 修正 | |||
| Version 0.72にて修正を行いました。 | |||
TGCの"TPS Monitor"の改行出力が不正になる
| 対象 | TG Controller | 登録日 | 2007/04/08 |
|---|---|---|---|
| 事象の詳細 | |||
|
リモートのTGに接続して処理を行っている際、TGCの"TPS monitor"の改行出力が不正になる場合があります。 ※正常時 =========================================================================== 00:16:33 AgS:DISC Act:0/10 SES:0/10 ErD:0/10 ERR:0 TPS:0 00:16:34 AgS:DISC Act:0/10 SES:0/10 ErD:0/10 ERR:0 TPS:0 00:16:35 AgS:DISC Act:0/10 SES:0/10 ErD:0/10 ERR:0 TPS:0 00:16:36 AgS:DISC Act:0/10 SES:0/10 ErD:0/10 ERR:0 TPS:0 ・・以下省略・・ =========================================================================== ※異常時 =========================================================================== 00:16:33 AgS:DISC Act:0/10 SES:0/10 ErD:0/10 ERR:0 TPS:0 00:16:34 AgS:DISC Act:0/10 SES:0/10 ErD:0/10 ERR:0 TPS:0 00:16:35 AgS:DISC Act:0/10 SES:0/10 ErD:0/10 ERR:0 TPS:0 00:16:36 AgS:DISC Act:0/10 SES:0/10 ErD:0/10 ERR:0 TPS:0 ・・以下省略・・ =========================================================================== |
|||
| 原因 | |||
| TGCのメッセージ処理ロジックの問題のためです。 | |||
| 回避策 | |||
| リモートのTGから一旦切断し、再接続すると事象が回避できる場合があります。 | |||
| 修正 | |||
| Version 0.72にて修正を行いました。 | |||
リモートのTGとの切断時にTGCにエラーメッセージが出力される
| 対象 | TG Controller | 登録日 | 2007/04/08 |
|---|---|---|---|
| 事象の詳細 | |||
| TGCから「Disconnect from TG 」機能を使用してリモートのTGから切断する際、正常に切断したにもかかわらず、TGCの"System event monitor"にエラーメッセージ「Connection with TG was broken unexpectedly」が出力される場合があります。 | |||
| 原因 | |||
| TGC内部におけるTGとの接続ステータス処理に問題があるためです。 | |||
| 回避策 | |||
| 該当メッセージを無視してください。 | |||
| 修正 | |||
| Version 0.72にて修正を行いました。 | |||
TGC(GUI)がローカルのTGへの接続に失敗する
| 対象 | TG Controller | 登録日 | 2007/03/29 |
|---|---|---|---|
| 事象の詳細 | |||
|
TGC(TG Controller)から「Startup TG (in local-host)」機能を使用し、ローカルのTGを起動した場合、通常はTG Consoleに以下のメッセージを出力した後自動的にTGへ接続しますが、この接続に失敗する場合があります。 ※TGC起動時のTG Console出力内容 =========================================================================== TG - Transaction Generator - [ Version 0.70 ] Thu Mar 29 22:58:20 JST 2007 Loading Oracle JDBC driver... .OK. Checking specified address & Port is possible to use... .OK. Now TG is running in "Slave Mode". - Listening Address : 0.0.0.0 - Port : 11111 <ここまでメッセージが出力され、ローカルのTGへの接続に失敗します> =========================================================================== |
|||
| 原因 | |||
TGCはTGとの接続時にTGのIPアドレスとPort番号を記憶し、次回TGへの接続時にも同一のアドレス・Port番号へ接続を試みます。これは例えば、以下のようなケースに該当した場合、TGCは存在しないノードへの接続を試みることになり、TCP/IPのタイムアウトを待った後、接続に失敗します。
|
|||
| 回避策 | |||
| 接続に失敗した後、「Specify and connect to TG...」機能を使用し、適切なアドレス・Port番号を指定して、ローカルのTGへ再度接続してください。 | |||
| 修正 | |||
| Version 0.71にて修正を行いました。 | |||
TGC(GUI)が異常終了する
| 対象 | TG Controller | 登録日 | 2007/03/29 |
|---|---|---|---|
| 対象となる環境 | |||
| TGがLinux等のWindows以外の環境で実行されており、Listener modeを使用してTGC(TG Controller)と通信している。 | |||
| 事象の詳細 | |||
TGC(TG Controller)の画面が以下のエラーメッセージを出力し、異常終了することがあります。
java.lang.IllegalArgumentException: Index out of bounds at org.eclipse.swt.SWT.error(SWT.java:2677) at org.eclipse.swt.SWT.error(SWT.java:2616) at org.eclipse.swt.SWT.error(SWT.java:2587) at org.eclipse.swt.custom.StyledText.getText(StyledText.java:4387) at tgc$messageWriter.deleteOverflowedlines(tgc.java:8406) at tgc$messageWriter.run(tgc.java:8137) at org.eclipse.swt.widgets.Display.runTimer(Display.java:2814) at org.eclipse.swt.widgets.Display.messageProc(Display.java:2196) at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method) at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1473) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2429) at tgc. |
|||
| 原因 | |||
| TGの改行コード(Linux:LF)の処理に問題があり、TGC側(Windows:CR,LF)で存在しないメッセージバッファを参照しようとすることがあります。 | |||
| 回避策 | |||
|
|||
| 修正 | |||
| Version 0.71にて修正を行いました。 | |||