メッセージの形式

タイミングを計測するメソッドが呼び出されるたびに、JRun は出力先に 2 つのメッセージを送信します。最初のメッセージには、識別情報、そのメソッド タイミングの開始を示すテキスト、およびメソッドの開始時間が記載されます。2 番目のメッセージには、同じ識別情報とメソッド タイミングの終了を示すテキストのほかに、メソッドのミリ秒単位の終了時間および経過時間が記載されます。

現在のメソッド タイミング メッセージの形式

現在のメソッド呼び出しに関するメッセージの形式には、次のコンポーネントが含まれます。

currentTimeMillis loglevel type,className,hashCode,methodName,
methodType,elapsed 

currentTimeMillis
 
メッセージの日付と時刻。時刻はミリ秒まで記録されます。
loglevel
 
タイミング メッセージのレベル。infowarningerror、またはdebug
type
 
メソッドの開始または終了を表す文字列
className
 
メソッドのクラス名
hashCode
 
メソッドのハッシュ コード。 ハッシュ コードは、マルチスレッド環境で役に立つ、固有オブジェクト参照です。2 つのスレッドが同じサーブレットで同時に機能している場合、メソッド タイミング メッセージはインターリーブされます。このため、ハッシュ コードを使用すると、メッセージを区別できます。
methodName
 
メソッドの名前
methodType
 
void を示す V など、戻り値のタイプを含むメソッドのシグネチャ
elapsed
 
メソッド呼び出しのミリ秒単位の経過時間 (メソッド)

doGet メソッドを開始したり終了することによって生成されるタイミング メッセージの例を次に示します。

11/15 03:41:50 info ENTER,HelloWorld,-100030151,doGet,
(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http
/HttpServletResponse;)V

11/15 03:41:50 info EXIT,HelloWorld,-100030151,doGet,
(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/
HttpServletResponse;)V,3

EXIT メッセージの最後のコンポーネントは、メソッドのミリ秒単位の継続時間です。

呼び出されたメソッド タイミング メッセージの形式

呼び出されたメソッド呼び出しメッセージの形式には、次のコンポーネントが含まれます。このメッセージの形式には、現在のメソッド呼び出しメッセージのすべてのコンポーネントと次の追加コンポーネントが含まれます。追加コンポーネントは太字で示されています。

currentTime loglevel type,className hashCode,methodName,
methodType,callClassName,callMethodName,callMethodType,line,elapsed 

コンポーネント
説明
callClassName
 
タイミングを計測するメソッドのクラス名
callMethodName
 
現在のメソッドによって呼び出された、呼び出されたメソッドの名前 (methodName)
callMethodType
 
呼び出されたメソッドのシグネチャ (callMethodName)
line
 
呼び出されたメソッド呼び出し (callMethodName) を含む、メソッドのステートメントの行番号 (methodName)

JSP で呼び出されたメソッドを開始したり終了することによって生成されたタイミング メッセージの例を次に示します。

03/16 13:32:12 info (JRun) CALLENTER,jrun__SampleWithStats2ejsp14,
73057990,_jspService,Ljavax/servlet/http/HttpServletRequest;Ljavax/
servlet/http/HttpServletResponse;)V,java.sql.DriverManager,
getConnection,Ljava/lang/String;Ljava/lang/String;Ljava/lang/
String;)Ljava/sql/Connection;,58

03/16 13:32:13 info (JRun) CALLEXIT,jrun__SampleWithStats2ejsp14,
73057990,_jspService,Ljavax/servlet/http/HttpServletRequest;Ljavax/
servlet/http/HttpServletResponse;)V,java.sql.DriverManager,
getConnection,Ljava/lang/String;Ljava/lang/String;Ljava/lang/
String;)Ljava/sql/Connection;,58,828

タイミング メッセージの書き込み

既定では、JRun はアプリケーションを実行する JRun サーバーのログ ファイルにタイミング メッセージを書き込みます。これらのメッセージをクライアントまたは別のファイルに書き込むように、JRun に指示することもできます。

クライアントへのタイミング メッセージの書き込み

次の手順に従って、メソッドをクライアントに転送します。

  1. local.properties ファイルでこのプロパティを設定して、計測を有効にできます。
    timing.enabled=true
    

    このオプションを有効にしない場合、クライアントに返される情報は、サーブレット の合計実行時間のみです。

  2. local.properties ファイルで次のプロパティを設定します。
    timing.logging.class=threadlogger
    
  3. 次のいずれかの手順に従い、サーブレット JRunStats を使用して、要求に関する統計情報を表示します。

メソッド タイミングを有効にすると、クライアントに送信される出力情報には、サーブレットの合計実行時間のほかに次の情報が含まれます。
出力
説明
Total ms
 
メソッド呼び出しのミリ秒単位の継続時間
Hits
 
サーブレット内でメソッドが呼び出された回数
Class.Method
 
呼び出しを作成中のサーブレット クラスまたはメソッドの名前
Called 
Class.Method
 
呼び出されたメソッドの名前。統計情報がメソッド Class.Method に関する場合は、空になります。
Line
 
呼び出しが作成された Class.Method のソース行番号で、統計情報がメソッド Class.Method に関する場合は、空になります。

次の図は、JRun に付属するサーブレット SnoopServlet に関するタイミングの出力例を示します。この例で使用されている URL は、次のとおりです。

http://localhost/servlet/SnoopServlet,JRunStats

この例では、情報の最初の行はメソッド呼び出し SnoopServlet.service に関する内容です。このタイミング情報は、SnoopServlet.service によって呼び出されるメソッドに関するものではなく、SnoopServlet.service によって呼び出されるメソッドに関する内容であるため、Called Class.Method および Line フィールドは空になります。

情報の 3 行目は、JRunDemoServlet.generateDemoPageStart メソッドに関する内容です。このメソッドは、SnoopServlet.service によって呼び出されます。

ファイルへのタイミング メッセージの書き込み

タイミング メッセージを別のファイルに書き込むように JRun を設定することもできます。

この例では、HelloWorld クラス (現在のメソッド) の doGet メソッドと doPost メソッドのメソッド タイミングを計測し、javax.servlet.http.* のメソッド (呼び出されたメソッド) への呼び出し時間を計測します。プロパティは、fileInstrumentWriter というファイル ライターを定義し、timing.log という名前の付いたファイルにタイミング メッセージを書き込みます。

# 計測を有効にします。
timing.enabled=true

# すべてのサーブレットから、計測の対象および対象外となる
# メソッドを指定します。
timing.excludecalls=java.*,javax.*,sun.*,org.omg.CORBA.*
timing.includecalls=java.sql.*

# ログ グループを設定します。 
logging.groups=instrumentLog 

# instrumentLog ログ グループおよび名前付きロガーを設定します。 
logging.groups.instrumentLog.timingNamedLogger=info 
logging.groups.instrumentLog.listeners=instLogThreadLog 

logging.instLogThreadLog.class=allaire.jrun.logging.ThreadedLogger 
logging.instLogThreadLog.listeners=fileInstrumentWriter 

# ファイル ライターを定義します。このファイル ライターにより、すべてのイベントが 
# 1 つのファイルに書き込まれます。 
logging.fileInstrumentWriter.class = allaire.jrun.logging.FileLogWriter 
logging.fileInstrumentWriter.filename = {jrun.roodir}/logs/timing.log 
logging.fileInstrumentWriter.rotationsize = 100000 
logging.fileInstrumentWriter.rotationfiles = 3 

# ロガー名を定義します。
timing.logging.class=simplelogger

# ロガー用のクラス ファイルを指定します。
timing.simplelogger.class=allaire.jrun.methodTimer.SimpleLogger
timing.simplelogger.level=info
timing.simplelogger.entermethod=ENTER
timing.simplelogger.exitmethod=EXIT
timing.simplelogger.beforemethodcall=CALLENTER
timing.simplelogger.aftermethodcall=CALLEXIT
timing.simplelogger.delimiter=,
timing.simplelogger.loggername=timingNamedLogger 

# 計測するサーブレットを指定して、タイミングを計測する現在のレベルおよび
# 呼び出されたレベルのメソッドを定義します。この例では、doGet メソッド、doPost メソッド、
# および doGet の呼び出されたすべてのメソッド呼び出しを計測します。
timing.classes=hWorld
timing.hWorld.class=HelloWorld
timing.hWorld.methods=doGet,doPost
timing.hWorld.calls=javax.servlet.http.*
timing.hWorld.doGet.calls=*

JSP のタイミングの計測

この例では、JSP ページの実行時間がクライアントに返されます。JRun ログ ファイルに情報を書き込むために、この例を変更することもできます。

次の手順に従って、JSP タイミング情報をクライアントに返します。

  1. local.properties ファイルで timing.enabled プロパティを次のように設定します。
    timing.enabled=true
    

    このオプションを有効にしない場合、サーブレットの合計実行時間のみがクライ アントに返されます。

  2. 次のプロパティを設定します。
    timing.logging.class=threadlogger
    
  3. JSP メソッド タイミング属性を設定します。
    timing.jsp.class=allaire.jrun.jsp.HttpJSPServlet
    timing.jsp.subclasses=true
    timing.jsp.methods=*
    timing.jsp.calls=*,javax.servlet.*
    

    これらの設定によって、HttpJSPServlet を直接スーパークラスとするすべての クラスに対してタイミングが計測されるように指定します。JRun では、すべての メソッドのパフォーマンスと、既定で timing.excludecalls プロパティにより 除外されている javax.servlet.* 呼び出しを含むメソッド内の呼び出しがすべて 計測されます。

  4. JRun サーバーを再起動します。
  5. サーブレット JRunStats を使用して、"クライアントへのタイミング メッセージの書き込み"に示しているように、要求に関する統計情報を表示します。