JP4867864B2 - Performance data collection / display system, performance data display device, and program thereof - Google Patents

Performance data collection / display system, performance data display device, and program thereof Download PDF

Info

Publication number
JP4867864B2
JP4867864B2 JP2007229709A JP2007229709A JP4867864B2 JP 4867864 B2 JP4867864 B2 JP 4867864B2 JP 2007229709 A JP2007229709 A JP 2007229709A JP 2007229709 A JP2007229709 A JP 2007229709A JP 4867864 B2 JP4867864 B2 JP 4867864B2
Authority
JP
Japan
Prior art keywords
time
request
function
processing
performance data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007229709A
Other languages
Japanese (ja)
Other versions
JP2009064124A (en
Inventor
一人 日向
崇 糸岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuji Electric Co Ltd
Original Assignee
Fuji Electric Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Electric Co Ltd filed Critical Fuji Electric Co Ltd
Priority to JP2007229709A priority Critical patent/JP4867864B2/en
Publication of JP2009064124A publication Critical patent/JP2009064124A/en
Application granted granted Critical
Publication of JP4867864B2 publication Critical patent/JP4867864B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、クライアントとサーバからなるシステムにおいて、クライアントからの要求に応じてサーバ上で実行されるアプリケーションプログラムの、関数単位の性能データ収集方式に関する。   The present invention relates to a performance data collection method for each function of an application program executed on a server in response to a request from a client in a system including a client and a server.

クライアントとサーバからなるシステムにおいて、サーバ上で動作するアプリケーションプログラムの応答が遅いなど性能に問題がある場合に、アプリケーションプログラムの性能(例えば、どの関数の処理に時間がかかっているのか等)を調べる方法としては、アプリケーションプログラムのソースプログラムに性能データ(上記関数の処理時間等)を収集する仕組みを組み込む方法が一般的であった。   In a system consisting of a client and a server, check the performance of the application program (for example, which function is taking a long time, etc.) when there is a problem in performance such as slow response of the application program running on the server. As a method, a method of incorporating a mechanism for collecting performance data (such as processing time of the above function) into a source program of an application program has been common.

図22に、従来のシステム構成及び性能データ収集方式を示す。
図22において、クライアント100は、例えば一般ユーザが所有するパソコン等の汎用コンピュータであり、一般的なOS102環境上でブラウザ等のクライアントプログラム101を実行することにより、不図示のLAN、インターネット等のネットワークを介してWeb/Apサーバ80にアクセスして任意の処理を要求する。例えばホームページ等を表示する。
FIG. 22 shows a conventional system configuration and performance data collection method.
In FIG. 22, a client 100 is a general-purpose computer such as a personal computer owned by a general user, for example, and executes a client program 101 such as a browser on a general OS 102 environment to thereby display a network such as a LAN (not shown) or the Internet. The Web / Ap server 80 is accessed via a request for an arbitrary process. For example, a homepage or the like is displayed.

Web/Apサーバ80は、Webサーバ/Ap(アプリケーション)サーバであり、各種アプリケーションプログラムを実装し、クライアント100からの要求に応じたアプリケーション実行を行い、例えばクライアント100側のディスプレイにホームページの表示等を行わせる。   The Web / Ap server 80 is a Web server / Ap (application) server, which implements various application programs, executes applications in response to requests from the client 100, and displays, for example, a home page on a display on the client 100 side. Let it be done.

この各種アプリケーションは、JSP/Servlet81、Javaクラス82より成る。尚、これら各種アプリケーションは、図示の通り、一般的なJava実行環境上(OS85、JavaVM(Java仮想マシン)84、Servletコンテナ83)で実行されることになる。また、JSPは、Java Server Pagesの略である。   These various applications are composed of JSP / Servlet 81 and Java class 82. Note that these various applications are executed in a general Java execution environment (OS 85, Java VM (Java virtual machine) 84, Servlet container 83) as shown in the figure. JSP is an abbreviation for Java Server Pages.

各種アプリケーションは、概略的には、JSP/Servlet81が基本動作を行い、JSP/Servlet81が必要なJavaクラス82を随時呼び出し、呼び出されたJavaクラス82のメソッド(関数)の処理が実行される。   In general, the JSP / Servlet 81 performs basic operations of various applications, the Java class 82 required by the JSP / Servlet 81 is called at any time, and the method (function) of the called Java class 82 is executed.

上記JSP/Servlet81、Javaクラス82より成る各種アプリケーションのうち任意のアプリケーション(特にJavaクラス82の各メソッド(関数))について、その性能データ(例えば各関数の処理時間等)収集を行いたい場合、開発用PC(パソコン)90上で、まず、当該性能データ収集対象のアプリケーションのソースコードファイルを開いて、オペレータ等が手作業で、このソースプログラムに性能データ収集処理を追加・記述する(図22上に示す(1))。   If you want to collect performance data (for example, processing time of each function, etc.) for any application (especially each method (function) of Java class 82) among the various applications consisting of JSP / Servlet81 and Java class 82 above, First, the source code file of the performance data collection target application is opened on the personal computer (PC) 90, and the performance data collection processing is added and described in this source program by the operator or the like manually (on FIG. 22). (1)).

続いて、この新たなソースコード91(性能データ収集処理が追加記述されたソースコード)をコンパイルして実行モジュール92(性能データ収集機能付き)を生成する(図22上に示す(2))。そして、Web/APサーバ80において、上記性能データ収集対象のアプリケーション(実行モジュール)を、上記性能データ収集機能付きの実行モジュール92に入れ替える(図22上に示す(3))。   Subsequently, the new source code 91 (source code additionally describing performance data collection processing) is compiled to generate an execution module 92 (with performance data collection function) ((2) shown in FIG. 22). Then, in the Web / AP server 80, the performance data collection target application (execution module) is replaced with the execution module 92 with the performance data collection function ((3) shown in FIG. 22).

その後は、実行モジュール92を実行することで、性能データ(各関数の処理時間等)
収集処理も行われることになる。
例えばサーバ上で動作するアプリケーションプログラムの応答が遅い等、性能に問題があるときに、原因を特定する為に、OS、ミドルウェア、アプリケーションプログラムの性能データ(各関数の処理時間等)を収集して、該収集した性能データを分析してグラフ表示を行うことは、従来から、よく行われていることである。
After that, by executing the execution module 92, performance data (processing time of each function, etc.)
Collection processing will also be performed.
Collect performance data (processing time of each function, etc.) of OS, middleware, and application program to identify the cause when there is a performance problem such as slow response of application program running on server. Analyzing the collected performance data and displaying it in a graph is a common practice.

そして、従来では、上記のように、各アプリケーションプログラム(Javaクラス82等)に性能データ収集処理を埋め込み、各関数の処理時間等を収集して分析することで、例えば図23(a)に示すように関数別に処理時間をグラフ表示する。また、OS、ミドルウェアの性能データは、例えばWindows(登録商標)のパフォーマンスモニタなどの既存の機能により収集でき、収集したデータを例えば図23(b)に示すようにグラフ表示していた。   Conventionally, as described above, performance data collection processing is embedded in each application program (such as Java class 82), and the processing time of each function is collected and analyzed, for example, as shown in FIG. In this way, the processing time for each function is displayed in a graph. In addition, the performance data of the OS and middleware can be collected by an existing function such as a performance monitor of Windows (registered trademark), for example, and the collected data is displayed in a graph as shown in FIG. 23B, for example.

尚、よく知られているように、Javaにおけるメソッドは“関数”に相当するものであり、上記の通り関数と呼ぶ場合もある。
また、特許文献1に記載の従来技術は、ログ情報採取解析装置に関し、プログラム実行時の動作状況を示すチャートの表示部分とソースプログラムとの対応をとるようにすることを目的としている。この発明では、利用者が指定したチャート上の位置情報からその位置に対応するソースプログラム上の関数名および行番号を知ることが出来る。その逆に、利用者が指定した関数名および行番号から、チャート上の表示位置を知ることができる。
特開平9−259011号公報
As is well known, a method in Java corresponds to a “function” and may be called a function as described above.
The prior art described in Patent Document 1 relates to a log information collection / analysis apparatus, and aims to take correspondence between a display portion of a chart indicating an operation state during program execution and a source program. In the present invention, the function name and line number on the source program corresponding to the position can be known from the position information on the chart designated by the user. Conversely, the display position on the chart can be known from the function name and line number specified by the user.
Japanese Patent Laid-Open No. 9-259011

上述した従来技術では、以下の課題が発生していた。
(1)アプリケーションプログラムの性能データの収集・集計結果には、各関数毎にこの関数が呼ばれたときのクライアント(ブラウザ)やリクエストを識別する情報が無いので、クライアント/リクエストに対応した関数の処理時間が把握できないため、クライアントやリクエスト固有の問題があった場合に特定が困難であった。
In the above-described conventional technology, the following problems have occurred.
(1) The performance data collection / aggregation results of the application program do not have information to identify the client (browser) or request when this function is called for each function. Since the processing time cannot be grasped, it was difficult to identify when there was a problem specific to the client or request.

(2)OS/ミドルウェアの性能データとアプリケーションの性能データをそれぞれ別々に表示することしかできない為、アプリケーションの動きとOS/ミドルウェアの状態との相関関係が掴み難く、効率的な原因分析が行えない。   (2) Since OS / middleware performance data and application performance data can only be displayed separately, the correlation between the movement of the application and the state of the OS / middleware is difficult to grasp, and efficient cause analysis cannot be performed. .

本発明の課題は、各関数毎にその関数実行に係るクライアント/リクエストを識別できる性能データ収集が行えることで、クライアントやリクエスト固有の問題があった場合に特定が容易となり、更にアプリケーションプログラムの関数単位の処理時間と、OS/ミドルウェアのリソース状況を重ね合わせて可視化表示(表、バー、グラフ等による表示)することで、効率的且つ的確な性能ボトルネック分析が可能となる性能データ収集・表示システム、性能データ表示装置、そのプログラムなどを提供することである。   An object of the present invention is that performance data can be collected for each function to identify a client / request related to the execution of the function. This makes it easy to specify when there is a problem specific to a client or a request. Performance data collection and display that enables efficient and accurate performance bottleneck analysis by overlaying and displaying the processing time of the unit and the OS / middleware resource status (display by table, bar, graph, etc.) It is to provide a system, a performance data display device, its program, and the like.

本発明の性能データ収集・表示システムは、任意のクライアントから任意のリクエストを受け付ける毎に、このリクエストに応じたセッションID、リクエストIDを所定の記憶領域に記憶すると共に、該セッションIDとリクエストIDとに対応付けて所定のログ情報を記録する第1の性能データ収集手段と、前記リクエストに応じて所定の1以上の関数の処理を実行するアプリケーション実行手段と、前記アプリケーション実行手段による前記各関数の処理実行時に、前記所定の記憶領域から前記セッションID、リクエストIDを取得して、該セッションIDとリクエストIDとに対応付けて前記各関数の処理実行に係る所定の性能データを前記ログ情報に追加記録する第2の性能データ収集手段と、
OS/ミドルウェアのリソース状況を示すデータを収集するリソース状況データ収集手段と、前記記録されたログ情報に基づいて、任意の前記各リクエストに応じた処理全体の開始日時、終了日時、処理時間を求め、又は前記各関数毎にその関数の処理の開始日時、終了日時、該関数の処理実行に掛かった時間である実行時間を求めて、該求めた情報を前記セッションID及びリクエストIDに対応付けて成る内部データを生成・記憶する内部データ生成・記憶手段と、前記内部データに基づいて、任意の前記各リクエスト毎の処理全体の処理時間又は該処理全体中の各関数の前記実行時間を示す可視化表示を行うと共に、これと同一時間軸上に前記リソース状況データに基づく可視化表示を重ね合わせて表示する表示手段とを有する。
The performance data collection / display system of the present invention stores a session ID and a request ID corresponding to this request in a predetermined storage area each time an arbitrary request is received from an arbitrary client. A first performance data collecting unit that records predetermined log information in association with the application, an application execution unit that executes processing of one or more predetermined functions in response to the request, and At the time of processing execution, the session ID and request ID are acquired from the predetermined storage area, and predetermined performance data related to the processing execution of each function is added to the log information in association with the session ID and request ID. A second performance data collecting means for recording;
Based on resource status data collection means for collecting data indicating the resource status of the OS / middleware and the recorded log information, the start date / time, end date / time, and processing time of the entire process corresponding to each arbitrary request are obtained. Or, for each function, the start date and time and end date and time of the processing of the function, and the execution time that is the time taken to execute the processing of the function are obtained, and the obtained information is associated with the session ID and the request ID. Internal data generating / storing means for generating / storing internal data, and visualization showing the processing time of the entire processing for each arbitrary request or the execution time of each function in the entire processing based on the internal data Display means for displaying and superimposing the visualization display based on the resource status data on the same time axis as the display.

上記性能データ収集・表示システムでは、上記任意のクライアントからの任意のリクエストに応じたセッションIDとリクエストIDとに対応付けて、各関数の性能データ等が記録される。よって、この記録を参照/分析すれば、例えば各セッション・リクエスト毎の処理全体の処理時間やこの処理全体中の各関数の実行時間等が求められ、これとリソース状況データとに基づいて表示を行うことで、問題がある箇所(例えばリソース状況が悪化する時間帯におけるセッション・リクエストの処理等)が、容易に把握できるようになる。あるいは、例えば同じ関数であっても、特定のセッション・リクエストに対応するものの性能データのみが悪ければ(実行時間が長い等)、この特定のセッション・リクエストに固有の何らかの問題があることが推測できる。   In the performance data collection / display system, performance data and the like of each function is recorded in association with a session ID and a request ID corresponding to an arbitrary request from the arbitrary client. Therefore, if this record is referred to / analyzed, for example, the processing time of the entire process for each session request, the execution time of each function in the entire process, and the like are obtained, and the display based on this and the resource status data By doing so, it becomes possible to easily grasp the location where there is a problem (for example, processing of a session request in a time zone in which the resource status deteriorates). Or, for example, the same function, but corresponding to a specific session request, if only the performance data is bad (such as long execution time), it can be inferred that there is some problem inherent to this specific session request .

また、上記性能データ収集・表示システムにおいて、例えば、前記第2の性能データ収集手段と前記アプリケーション実行手段を実現させるプログラムは、所定のログ出力処理と任意の各ログ出力対象/ログ出力箇所とが記述されたアスペクトソースファイルと、前記関数の処理に係るアプリケーションプログラムとをアスペクトコンパイルすることで生成される。   In the performance data collection / display system, for example, the program for realizing the second performance data collection means and the application execution means includes a predetermined log output process and an arbitrary log output target / log output location. It is generated by aspect-compiling the described aspect source file and the application program related to the function processing.

これにより、各アプリケーションプログラム毎に逐一必要な箇所にログ出力処理を追加するような手間が掛かることは必要なく、1つのアスペクトソースファイルを作成すれば済む。   As a result, it is not necessary to add a log output process to a necessary part for each application program, and it is sufficient to create one aspect source file.

本発明の性能データ収集・表示システム、性能データ表示装置、そのプログラムなどによれば、特に各関数毎にその関数実行に係るクライアント/リクエストを識別できる性能データ収集が行えることで、クライアントやリクエスト固有の問題があった場合に特定が容易となり、更にアプリケーションプログラムの関数単位の処理時間と、OS/ミドルウェアのリソース状況を重ね合わせて可視化表示(表、バー、グラフ等による表示)することで、効率的且つ的確な性能ボトルネック分析が可能となる。更に、性能データ収集の為の処理を容易に追加可能となる。   According to the performance data collection / display system, performance data display device, program thereof, and the like of the present invention, it is possible to collect performance data that can identify a client / request related to the execution of the function for each function. If there is a problem, it is easy to identify, and the processing time for each function of the application program and the OS / middleware resource status are superimposed and displayed (displayed in a table, bar, graph, etc.) for efficiency. And accurate performance bottleneck analysis becomes possible. Furthermore, processing for collecting performance data can be easily added.

以下、図面を参照して本発明の実施の形態について説明する。
図1に、本例のクライアントとサーバからなるシステムのシステム構成図を示す。
図1において、クライアント100は、上記従来のクライアント100と同じであってよく(ブラウザ搭載の一般ユーザのパソコン等)、同一符号を付し、説明は省略する。
Embodiments of the present invention will be described below with reference to the drawings.
FIG. 1 shows a system configuration diagram of a system including a client and a server in this example.
In FIG. 1, the client 100 may be the same as the conventional client 100 (a general user's personal computer equipped with a browser, etc.), and is denoted by the same reference numeral, and description thereof is omitted.

図示のWeb/Apサーバ10は、上記従来のWeb/Apサーバ80と同様に、一般的なJava実行環境上(OS15、JavaVM(Java仮想マシン)14、Servletコンテナ13)で、各種アプリケーションが実行されることになる。各種アプリケーションは、JSP/Servlet11、Javaクラス12等より成る。従来で説明したように、JSP/Servlet11が各Javaクラス12を呼び出すものであ
り、各Javaクラス12は1以上のメソッド(関数)を実行するものであり、概略的にはJavaクラス12をメソッド(関数)と見做してもよい。
In the illustrated Web / Ap server 10, various applications are executed in a general Java execution environment (OS 15, JavaVM (Java Virtual Machine) 14, Servlet container 13), similarly to the above-described conventional Web / Ap server 80. Will be. The various applications include JSP / Servlet 11 and Java class 12. As described above, the JSP / Servlet 11 calls each Java class 12, and each Java class 12 executes one or more methods (functions). In general, the Java class 12 is called a method ( (Function).

そして、本例の構成では、Web/Apサーバ10は、更に、第1の性能データ収集プログラム(Servletフィルタ)16と第2の性能データ収集プログラム17を有する。
尚、第1の性能データ収集プログラム(Servletフィルタ)16と第2の性能データ収集プログラム17(その他、JSP/Servlet11、Javaクラス12等の他の各種プログラムも)は、例えば後述する図21に示す記憶部75に格納されており、これをCPU71が読み出し・実行することにより、所定の機能・動作を実現するものであり、以下、特に逐一断らないが、当然、以下の説明における各種プログラムに係る機能・動作の説明は、これら各種プログラムがCPU71等の演算プロセッサにより実行されることにより実現される機能・動作を説明しているものである。
In the configuration of this example, the Web / Ap server 10 further includes a first performance data collection program (Servlet filter) 16 and a second performance data collection program 17.
The first performance data collection program (Servlet filter) 16 and the second performance data collection program 17 (and other various programs such as JSP / Servlet 11 and Java class 12) are shown in FIG. The data is stored in the storage unit 75 and is read and executed by the CPU 71 to realize a predetermined function / operation. The following is not particularly noted, but naturally, it relates to various programs in the following description. The description of the function / operation describes the function / operation realized by executing these various programs by an arithmetic processor such as the CPU 71.

第1の性能データ収集プログラム(Servletフィルタ)16は、Javaのサーバアプリケーション形態の一つであるServletフィルタプログラムであり、Servlet やJSPの実行環境であるServletコンテナ13上で動作する。本プログラムは、アプリケーションプログラムとは別物であり、アプリケーションプログラムの実行環境に配備して利用する。   The first performance data collection program (Servlet filter) 16 is a Servlet filter program which is one of Java server application forms, and operates on a Servlet container 13 which is an execution environment of a Servlet or JSP. This program is different from the application program and is deployed and used in the execution environment of the application program.

そして、第1の性能データ収集プログラム(Servletフィルタ)16は、詳しくは後述するように、任意のクライアント100からの任意のリクエストが受信される毎に(更に、その応答毎に)、セッションID、リクエストID、スレッド名、日付時刻情報等を取得して、ログファイルに記録する。また、リクエスト受信時に、上記セッションID、リクエストIDを、所定の記憶領域に記憶して、この記憶領域を介することで、第2の性能データ収集プログラム(Javaクラス)17に渡す。   The first performance data collection program (Servlet filter) 16, as will be described in detail later, every time an arbitrary request from an arbitrary client 100 is received (and for each response), a session ID, Get the request ID, thread name, date / time information, etc., and record it in the log file. When receiving a request, the session ID and the request ID are stored in a predetermined storage area, and passed to the second performance data collection program (Java class) 17 via the storage area.

第2の性能データ収集プログラム(Javaクラス)17は、当該プログラム実行毎に、上記所定の記憶領域を参照する等して上記セッションID、リクエストIDを取得し、更にスレッド名、日付時刻情報、メソッド名(関数名)等を取得して、これらをログファイルに記録する。   The second performance data collection program (Java class) 17 obtains the session ID and the request ID by referring to the predetermined storage area every time the program is executed, and further acquires the thread name, date / time information, method Get the name (function name) etc. and record them in the log file.

第2の性能データ収集プログラム(Javaクラス)17は、例えば後述する図5のように、実行中のアプリケーションプログラム(Javaクラス12)から任意のタイミングで呼び出されることで実行される。この呼び出しタイミングは、例えば任意のログ出力対象のメソッド(関数)の実行時(例えばその開始/終了時等)等となっている。これにより、例えば、実行された関数の日付時刻情報(関数の実行開始/終了時刻等)等に、この関数実行に係るクライアントやリクエストを示すセッションID、リクエストIDが対応付けられて、ログファイルに記録されることになる。   The second performance data collection program (Java class) 17 is executed by being called at an arbitrary timing from the application program (Java class 12) being executed as shown in FIG. This call timing is, for example, when an arbitrary method (function) for log output is executed (for example, at the start / end thereof). As a result, for example, the date / time information (execution start / end time of the function, etc.) of the executed function is associated with the session ID and request ID indicating the client or request related to the function execution, and the log file Will be recorded.

上記のように、アプリケーションプログラム(Javaクラス12)には任意のタイミングでの呼び出し処理が含まれているが、これは最初から存在するわけでなく、必要に応じて追加される。つまり、呼び出し処理を有するアプリケーションプログラム(Javaクラス12)は、必要に応じて、第2の性能データ収集プログラム(Javaクラス)17と共に生成される。この生成処理は、従来のように手間が掛かるものではなく、以下に説明するように容易に生成できる。尚、後述するように、アプリケーションプログラム(Javaクラス12)内に第2の性能データ収集プログラム(Javaクラス)17が含まれる形態であってもよい。   As described above, the application program (Java class 12) includes call processing at an arbitrary timing, but this does not exist from the beginning, and is added as necessary. That is, an application program (Java class 12) having a call process is generated together with the second performance data collection program (Java class) 17 as necessary. This generation process is not time-consuming as in the prior art, and can be easily generated as described below. As described later, the second performance data collection program (Java class) 17 may be included in the application program (Java class 12).

以下、上記アプリケーションプログラム(Javaクラス12)及び第2の性能データ収集プログラム(Javaクラス)17の生成処理について説明する。
アプリケーションプログラム(Javaクラス12)及び第2の性能データ収集プログ
ラム(Javaクラス)17は、アプリケーションプログラムのバイトコードと、当該アプリケーションプログラム内の任意のログ出力対象関数、当該関数内のログ出力箇所(例:関数開始点、関数終了点)、およびログ出力処理を記述したアスペクトプログラムのソースファイルとを、アスペクトコンパイラによりコンパイルすることで生成される。
Hereinafter, generation processing of the application program (Java class 12) and the second performance data collection program (Java class) 17 will be described.
The application program (Java class 12) and the second performance data collection program (Java class) 17 are a byte code of the application program, an arbitrary log output target function in the application program, and a log output location in the function (example : Function start point, function end point), and the source file of the aspect program describing the log output processing is generated by compiling with the aspect compiler.

尚、アスペクトプログラムとは、所謂“アスペクト指向プログラミング”(略してAOPと呼ばれる)手法に係るプログラムである。AOPとは、端的に言えば、システムに渡って横断的に要求される機能を、一箇所に「アスペクト」としてまとめておくプログラミング手法のことである。よって、上記アスペクトプログラムは、複数の各アプリケーションプログラムに共通的な処理(例:ログ出力処理等)が記述されたものである。   The aspect program is a program according to a so-called “aspect-oriented programming” (abbreviated as AOP) technique. In short, AOP is a programming technique in which functions required across the system are grouped as “aspects” in one place. Therefore, the aspect program describes processing common to a plurality of application programs (eg, log output processing).

以下、図2を参照して、上記第2の性能データ収集プログラム(Javaクラス:アスペクトプログラム)17等の生成方法について説明する。
上記第2の性能データ収集プログラム(Javaクラス)17(及びJavaクラス12)は、図2に示すアプリケーションプログラムのバイトコード(.classファイル)22(以下、アプリケーションプログラム22と記す)と、アスペクトプログラムのソースファイル(.ajファイル)21(以下、アスペクトソースファイル21と記す)とを、アスペクトコンパイラ20によりコンパイルする(以下、アスペクトコンパイルという)ことで生成される。アスペクトソースファイル21には、アプリケーションプログラム22のログ出力対象関数、関数内のログ出力箇所(例:関数開始点、関数終了点)、およびログ出力処理が、プログラマ等によって記述されている。
Hereinafter, a method for generating the second performance data collection program (Java class: aspect program) 17 and the like will be described with reference to FIG.
The second performance data collection program (Java class) 17 (and Java class 12) includes a byte code (.class file) 22 (hereinafter referred to as application program 22) of the application program shown in FIG. A source file (.aj file) 21 (hereinafter referred to as aspect source file 21) is generated by compiling with the aspect compiler 20 (hereinafter referred to as aspect compilation). In the aspect source file 21, a log output target function of the application program 22, a log output location in the function (eg, function start point, function end point), and log output processing are described by a programmer or the like.

そして、アスペクトコンパイラ20によるコンパイルの結果として、図2に示す(3)アスペクトプログラム(.classファイル)23と(4)アプリケーションプログラム(.classファイル)24とが生成される。このアスペクトプログラム(.classファイル)23が上記図1に示す第2の性能データ収集プログラム(Javaクラス)17に相当し、アプリケーションプログラム(.classファイル)24がJavaクラス12に相当する。   Then, as a result of compilation by the aspect compiler 20, (3) aspect program (.class file) 23 and (4) application program (.class file) 24 shown in FIG. 2 are generated. The aspect program (.class file) 23 corresponds to the second performance data collection program (Java class) 17 shown in FIG. 1, and the application program (.class file) 24 corresponds to the Java class 12.

尚、アプリケーションプログラム22はアスペクトコンパイル前のアプリケーションプログラム(Javaクラス12)であり、上記アスペクトコンパイルによって、アスペクトソースファイル21に記述されている各ログ出力対象関数の各ログ出力箇所に、第2の性能データ収集プログラム(Javaクラス)17の呼び出し処理が挿入されることになり、これが上記アプリケーションプログラム(.classファイル)24である。   The application program 22 is an application program (Java class 12) before aspect compilation, and the second performance is provided at each log output location of each log output target function described in the aspect source file 21 by the aspect compilation. Call processing of the data collection program (Java class) 17 is inserted, and this is the application program (.class file) 24.

上記アスペクトコンパイラ20によるコンパイル前後のソースファイル/プログラムに関して、以下にまとめて説明する。
(1)アスペクトソースファイル(.ajファイル)21;
アプリケーションプログラム22の各関数のうちの特定のログ出力対象関数、このログ出力対象関数に係るログ出力箇所(例:関数開始点、関数終了点)、およびログ出力処理を記述したソースファイル。Javaに似た言語にて記述する。
The source files / programs before and after compilation by the aspect compiler 20 will be described together below.
(1) Aspect source file (.aj file) 21;
A source file describing a specific log output target function among the functions of the application program 22, a log output location (eg, function start point, function end point) related to the log output target function, and log output processing. Write in a language similar to Java.

(2)アプリケーションプログラム(.classファイル)22;
アプリケーションソースファイルをJavaコンパイラでコンパイルしたバイトコード。従来のJavaクラス82(但し、処理時間収集処理無しのバージョン)に相当する。
(2) Application program (.class file) 22;
Byte code obtained by compiling an application source file with a Java compiler. This corresponds to the conventional Java class 82 (however, the version without processing time collection processing).

(3)アスペクトプログラム(.classファイル)23;
アスペクトソースファイル21をアスペクトコンパイルした結果生成される、上記第2の性能データ収集プログラム(Javaクラス)17である。アスペクトソースファイル21内で定義された各ログ出力対象関数内の各ログ出力箇所でアプリケーションプログラム(.classファイル)24が呼び出しを行うことで、ログ出力処理を行う。つまり、アスペク
トプログラム(.classファイル)23自体は、基本的に、所定のログ出力処理を行うだけである。
(3) Aspect program (.class file) 23;
The second performance data collection program (Java class) 17 is generated as a result of aspect compilation of the aspect source file 21. The log output process is performed by the application program (.class file) 24 calling at each log output location in each log output target function defined in the aspect source file 21. In other words, the aspect program (.class file) 23 itself basically only performs a predetermined log output process.

(4)アプリケーションプログラム(.classファイル)24;
アプリケーションプログラム22に対しアスペクトコンパイルを行うことで、例えば図4(b)に示すように各ログ出力箇所に上記アスペクトプログラム(.classファイル)23の呼び出し処理が埋め込まれたプログラム。
(4) Application program (.class file) 24;
A program in which the calling process of the aspect program (.class file) 23 is embedded in each log output location as shown in FIG. 4B, for example, by performing aspect compilation on the application program 22.

上記のように生成したアスペクトプログラム(.classファイル)23及びアプリケーションプログラム(.classファイル)24を、例えば図3に示すようにアプリケーション実行環境に配備、置き換えすることで(上記の通り、これらプログラム23,24は、第2の性能データ収集プログラム(Javaクラス)17、Javaクラス12に相当する)、アプリケーションプログラムの性能データの収集が可能になる。   The aspect program (.class file) 23 and the application program (.class file) 24 generated as described above are deployed and replaced in the application execution environment as shown in FIG. 3, for example (as described above, these programs 23 , 24 correspond to the second performance data collection program (Java class) 17 and Java class 12), and the performance data of the application program can be collected.

尚、図1〜図3に示すものは、一例であり、この例に限るものではない。すなわち、公知のように、上記“アスペクト指向プログラミング”手法に係るコンパイラでは、アスペクトプログラムとアプリケーションプログラムとを統合することも可能である。   In addition, what is shown in FIGS. 1-3 is an example, and is not restricted to this example. That is, as is well known, the compiler according to the above “aspect-oriented programming” method can also integrate the aspect program and the application program.

この場合、アスペクトコンパイル処理によって、例えば図4(a)に示すように、アプリケーションプログラム22中にアスペクトプログラム23が埋め込まれた形式の1つのプログラムが生成されることになる。アスペクトプログラム23が埋め込まれる位置は、当然、アスペクトソースファイル(.ajファイル)21で記述されている、上記各ログ出力対象関数に係る各ログ出力箇所(例えば関数の開始/終了時点)である。この場合も、埋め込まれるアスペクトプログラム23自体は、上記ログ出力処理を実行するものである。   In this case, as shown in FIG. 4A, for example, one program in a format in which the aspect program 23 is embedded in the application program 22 is generated by the aspect compilation process. Naturally, the position where the aspect program 23 is embedded is each log output location (for example, the start / end time of the function) related to each log output target function described in the aspect source file (.aj file) 21. Also in this case, the embedded aspect program 23 itself executes the log output process.

一方、本説明で用いる例では、上述した通り、2つのプログラムが1つに統合されることはなく、アスペクトプログラム(.classファイル)23及びアプリケーションプログラム(.classファイル)24が生成される。   On the other hand, in the example used in this description, as described above, the two programs are not integrated into one, and the aspect program (.class file) 23 and the application program (.class file) 24 are generated.

そして、アプリケーションプログラム(.classファイル)24には、図4(b)に示すように、コンパイル前のアプリケーションプログラム(.classファイル)22中に、アスペクトプログラム(.classファイル)23を呼び出す処理が埋め込まれることになる。この呼び出し処理が埋め込まれる位置は、当然、アスペクトソースファイル(.ajファイル)21で記述されている、上記ログ出力箇所である。そして、呼び出されたアスペクトプログラム(.classファイル)23は、上記ログ出力処理を実行することになる。   In the application program (.class file) 24, as shown in FIG. 4B, processing for calling the aspect program (.class file) 23 is embedded in the application program (.class file) 22 before compilation. Will be. The position where this call processing is embedded is, of course, the log output location described in the aspect source file (.aj file) 21. Then, the called aspect program (.class file) 23 executes the log output process.

尚、よく知られているように、一つの「クラス」は通常、1以上の「メソッド(関数)」を有しており、例えば全ての「クラス」を上記アプリケーションプログラム22とし、アスペクトソースファイル(.ajファイル)21で指定された関数を有する「クラス」には、当該関数の実行箇所に呼び出し処理が埋め込まれるようにしてもよいし、アスペクトソースファイル(.ajファイル)21で指定された「クラス」のみを上記アプリケーションプログラム22としてアスペクトコンパイラ20に入力させるようにしてもよい。   As is well known, one “class” usually has one or more “methods (functions)”. For example, all the “classes” are the application programs 22 and the aspect source file ( In the “class” having the function designated by the .aj file) 21, the calling process may be embedded in the execution location of the function, or “class” designated by the aspect source file (.aj file) 21 Only the “class” may be input to the aspect compiler 20 as the application program 22.

図5は、本例のクライアントとサーバからなるシステム全体の動作を示す図である。
Web/Apサーバ10は、任意のクライアント100のブラウザ等から送られてくる任意のリクエストを受信すると、まず、第1の性能データ収集プログラム(Servletフィルタ)16が、詳しくは後述する図6の処理によって得たセッションIDとリクエストIDを、主記憶装置30内のスレッド固有の変数領域31に格納する。尚、言うまでもないが、セッションIDは各セッションを識別する識別コードであり、リクエストIDは各リ
クエストに対し一意となるIDであり、スレッド固有の変数領域31は各スレッド毎に割り当てられる変数領域である。
FIG. 5 is a diagram illustrating the operation of the entire system including the client and the server in this example.
When the Web / Ap server 10 receives an arbitrary request sent from a browser or the like of an arbitrary client 100, first, the first performance data collection program (Servlet filter) 16 performs processing shown in FIG. The session ID and request ID obtained by the above are stored in the thread-specific variable area 31 in the main storage device 30. Needless to say, the session ID is an identification code for identifying each session, the request ID is an ID unique to each request, and the thread-specific variable area 31 is a variable area assigned to each thread. .

第1の性能データ収集プログラム(Servletフィルタ)16は、更に、詳しくは後述する図6の処理によって、更に、日付時刻情報、スレッド名、処理の開始/終了情報、アクセスURL等の各種情報を取得して、これら取得した情報を上記セッションID、リクエストIDと共に、例えば補助記憶装置40(ハードディスク等)内のログファイル41に書き込む。   The first performance data collection program (Servlet filter) 16 further acquires various types of information such as date / time information, thread name, process start / end information, access URL, and the like by the process of FIG. Then, the acquired information is written in the log file 41 in the auxiliary storage device 40 (hard disk or the like) together with the session ID and request ID.

上記第1の性能データ収集プログラム(Servletフィルタ)16による処理に続いて、上記受信したリクエストに応じたJavaアプリケーション(JSP/Servlet11、Javaクラス12)が実行されることになる。(JSP/Servlet11が実行され、当該スレッドから呼び出された関数が実行される。)
そして、任意のJavaクラス12が実行されるとき、このJavaクラス12が上記呼び出し処理が埋め込まれたものである場合には、この呼び出し処理が実行されることで呼び出されたアスペクトプログラム(.classファイル)23(第2の性能データ収集プログラム(Javaクラス)17)が実行されることになる。
Subsequent to the processing by the first performance data collection program (Servlet filter) 16, the Java application (JSP / Servlet 11, Java class 12) corresponding to the received request is executed. (JSP / Servlet 11 is executed, and a function called from the thread is executed.)
When an arbitrary Java class 12 is executed, if the Java class 12 is embedded with the call process, the aspect program (.class file) called by executing the call process is executed. ) 23 (second performance data collection program (Java class) 17) is executed.

この呼び出しタイミングは、ユーザ等が上記ソースプログラムで任意に指定しているものであり、例えば関数の実行開始時/終了時等であり、ここではこの例を用いて説明する。   This call timing is arbitrarily specified by the user or the like in the source program, for example, at the start / end of the execution of the function, and will be described here using this example.

呼び出された第2の性能データ収集プログラム(Javaクラス)17は、詳しくは後述する図7の処理を実行することで、当該スレッド固有の変数領域31に格納されている上記セッションID、リクエストIDや、日付時刻情報、スレッド名、処理の開始/終了情報、アクセスURL等の各種情報を、例えば補助記憶装置40(ハードディスク等)内のログファイル41に書き込む。   The called second performance data collection program (Java class) 17 executes the processing shown in FIG. 7 to be described in detail later, thereby the session ID, request ID, and the like stored in the variable area 31 unique to the thread. Various information such as date / time information, thread name, processing start / end information, access URL, and the like are written in the log file 41 in the auxiliary storage device 40 (hard disk or the like), for example.

尚、上記各種処理は、一旦、主記憶装置30内に記憶しておき、リクエストによる一連の処理(リクエストに応じて呼び出される全関数の実行)が完了したタイミングで、主記憶装置30から補助記憶装置40上のログファイル41に出力するようにしてもよい。   The above-described various processes are temporarily stored in the main storage device 30, and auxiliary storage is performed from the main storage device 30 at a timing when a series of processing (execution of all functions called in response to the request) is completed. You may make it output to the log file 41 on the apparatus 40. FIG.

以下、図6、図7を参照して、上記第1、第2の性能データ収集プログラムによって実行される処理について説明する。
上記の通り、図6は第1の性能データ収集プログラム(Servletフィルタ)16の処理フローチャート図であり、図7は第2の性能データ収集プログラム(Javaクラス)17の処理フローチャート図である。
Hereinafter, processing executed by the first and second performance data collection programs will be described with reference to FIGS.
As described above, FIG. 6 is a process flowchart diagram of the first performance data collection program (Servlet filter) 16, and FIG. 7 is a process flowchart diagram of the second performance data collection program (Java class) 17.

まず、図6に示す処理について説明する。
図6に示すように、第1の性能データ収集プログラム(Servletフィルタ)16は、任意のクライアントから任意のリクエストを受信する毎に(ステップS11)、まず、当該Apサーバが自動的に割り当てるセッションIDと、当該リクエストの通過時に当該プログラム(Servletフィルタ)がプログラム内でカウント/生成するリクエストIDとを、上記スレッド固有の変数領域31に格納する(ステップS12)。また、Java内部で付与されるスレッド名を取得する(ステップS13)。更に、現在日時(あるいは上記リクエストを受信した時点)を示す日付時刻情報等を、Web/Apサーバ10内の不図示のシステムクロックから取得する(ステップS14)。
First, the process shown in FIG. 6 will be described.
As shown in FIG. 6, each time the first performance data collection program (Servlet filter) 16 receives an arbitrary request from an arbitrary client (step S11), first, a session ID that is automatically assigned by the Ap server. And the request ID that the program (Servlet filter) counts / generates in the program when the request passes is stored in the thread-specific variable area 31 (step S12). Also, a thread name given inside Java is acquired (step S13). Further, date / time information indicating the current date and time (or the time when the request is received) is acquired from a system clock (not shown) in the Web / Ap server 10 (step S14).

そして、上記各処理により取得した各種情報、すなわち現在の日付時刻情報、セッションID、リクエストID、スレッド名と、更に、処理の開始/終了情報、アクセスURL
を、ログファイル41に書き込む(ステップS15)。
And various information acquired by each of the above processes, that is, current date / time information, session ID, request ID, thread name, process start / end information, access URL
Is written in the log file 41 (step S15).

尚、処理の開始/終了情報は、単に、任意のリクエストに応じた処理の開始時点か終了時点かを示す情報であり、リクエスト受信時には当然“開始”となる。尚、リクエストに応じた一連の処理が終了してレスポンスを返す際にも、第1の性能データ収集プログラム(Servletフィルタ)16は図6の処理を実行するものであり、その際には処理の開始/終了情報は当然“終了”となる。また、尚、アクセスURLは、リクエストされた(アクセス先の)ホームページ等のURLである。   The process start / end information is simply information indicating whether the process is started or ended in response to an arbitrary request, and is naturally “start” when a request is received. The first performance data collection program (Servlet filter) 16 also executes the processing of FIG. 6 when a series of processing according to the request is completed and a response is returned. Naturally, the start / end information is “end”. The access URL is the URL of the requested homepage (access destination).

次に、図7の処理について以下に説明する。
尚、図7に示す各ステップの処理のうち、第2の性能データ収集プログラム(Javaクラス)17自体によって実行される処理は、ステップS24〜S27であると見做してもよい。すなわち、ステップS21〜S23の処理は、任意の第2の性能データ収集プログラム(Javaクラス)17が呼び出されるまでの処理を意味すると見做してもよい。つまり、JSP/Servlet11が任意のJavaクラス12を呼出す毎に(ステップS21)、このJavaクラス12にログ出力対象関数がない場合(ステップS22,NO)、すなわち上記アスペクト・コンパイルにより呼び出し処理が全く埋め込まれていない場合には、当然、第2の性能データ収集プログラム(Javaクラス)17が呼び出されることはなく、このJavaクラス12の処理が実行されるだけである。
Next, the process of FIG. 7 will be described below.
Of the processes in each step shown in FIG. 7, the processes executed by the second performance data collection program (Java class) 17 itself may be regarded as steps S24 to S27. That is, the processing in steps S21 to S23 may be considered to mean processing until an arbitrary second performance data collection program (Java class) 17 is called. That is, every time the JSP / Servlet 11 calls an arbitrary Java class 12 (step S21), if there is no log output target function in the Java class 12 (step S22, NO), that is, the calling process is completely embedded by the above aspect compilation. If not, naturally, the second performance data collection program (Java class) 17 is not called, and only the processing of the Java class 12 is executed.

一方、ログ出力対象関数がある場合には(ステップS22,YES)、このログ出力対象関数の実行に伴って、上記ログ出力箇所(関数実行開始/終了時等)に埋め込まれている呼び出し処理が実行される毎に(ステップS23,YES)、呼び出された第2の性能データ収集プログラム(Javaクラス)17がステップS24〜S27の処理を実行することになる。   On the other hand, when there is a log output target function (step S22, YES), a call process embedded in the log output location (function execution start / end time, etc.) is executed along with the execution of the log output target function. Each time it is executed (step S23, YES), the called second performance data collection program (Java class) 17 executes the processing of steps S24 to S27.

すなわち、まず、当該スレッドに対応する上記スレッド固有変数領域31に記憶されている上記セッションID、リクエストIDを取得し(ステップS24)、Java内部で付与されるスレッド名を取得する(ステップS25)。更に、現在日時(あるいは上記呼び出しを受けた時点等)の日付時刻情報等を、Web/Apサーバ10内の不図示のシステムクロックから取得する(ステップS26)。   That is, first, the session ID and the request ID stored in the thread specific variable area 31 corresponding to the thread are acquired (step S24), and the thread name given inside Java is acquired (step S25). Further, the date / time information of the current date and time (or the time when the call is received, etc.) is acquired from the system clock (not shown) in the Web / Ap server 10 (step S26).

そして、上記各処理で取得した各種情報、すなわち現在の日付時刻情報、セッションID、リクエストID、スレッド名と、更に、処理の開始/終了情報、アクセスURL、(呼び出し元の)関数名を、当該関数の性能データとしてログファイル41に書き込む(ステップS27)。   Then, various information acquired in each process, that is, current date / time information, session ID, request ID, thread name, and process start / end information, access URL, function name (caller) The function performance data is written in the log file 41 (step S27).

尚、開始/終了情報や(呼び出し元の)関数名は、呼び出し処理の際にパラメータとして渡してもよいし、他の方法であってよい。
上述した処理により、任意のクライアント(セッション)からの任意のリクエストに応じた全てのログ出力対象関数に関する上記性能データには、同一のセッションID及びリクエストIDが格納されていることになり、後に、収集した性能データを分析する際に、例えば各リクエストによる同じ関数に係る処理時間を一覧表示して、他と比較して処理時間が非常に長いものがあった場合に、この関数の性能データに含まれるセッションID及びリクエストIDから、そのクライアントやリクエスト固有の問題があることが推定できる等、クライアントやリクエスト固有の問題があった場合に特定が容易となる
図8に、上記ログファイル41の格納データ形式の一例を示す。
The start / end information and the function name (of the caller) may be passed as parameters during the call process, or other methods may be used.
Through the processing described above, the same session ID and request ID are stored in the performance data related to all log output target functions corresponding to an arbitrary request from an arbitrary client (session). When analyzing the collected performance data, for example, list the processing times related to the same function by each request, and if there is a processing time that is very long compared to others, the performance data of this function It is easy to specify when there is a problem specific to the client or the request, such as inferring that there is a problem specific to the client or the request from the included session ID and request ID. FIG. 8 shows how the log file 41 is stored. An example of a data format is shown.

図示の例では、ログファイル41のテーブル50(以下、性能データ50とも言うものとする)は、年月日時分秒.ミリ秒51、ログレベル52、セッションID53、リクエ
ストID54、スレッド名55、開始/終了56、URL57、実行メソッド情報58等の各データ項目より成る(尚、図示の「備考・参考情報」はここでは関係ない)。
In the example shown in the figure, the table 50 of the log file 41 (hereinafter also referred to as performance data 50) includes year / month / day / hour / minute / second. It consists of data items such as millisecond 51, log level 52, session ID 53, request ID 54, thread name 55, start / end 56, URL 57, execution method information 58, etc. unrelated).

年月日時分秒.ミリ秒51には、上記現在の日付時刻情報が格納される。この例のように、日付時刻情報は、年月日時分秒に加えてミリ秒単位まであり、ここではミリ秒は3桁となっている。   Year / month / day / hour / minute / second. In the millisecond 51, the current date / time information is stored. As shown in this example, the date / time information includes the year, month, day, hour, minute, and second to the millisecond unit. Here, the millisecond is three digits.

ログレベル52は常に“DEBUG”とするが、ここでは関係ない。
セッションID53、リクエストID54、スレッド名55、開始/終了56、URL57には、それぞれ上記セッションID、リクエストID、スレッド名、処理の開始/終了情報、アクセスURLが格納される。
The log level 52 is always “DEBUG”, which is not relevant here.
The session ID 53, request ID 54, thread name 55, start / end 56, and URL 57 store the session ID, request ID, thread name, process start / end information, and access URL, respectively.

実行メソッド情報58には、上記呼び出し元の関数名(メソッド名)が格納される。よって、図6の処理の際には何も格納されない。
上述した本システムによれば、アプリケーションプログラムの各ソースコード毎に逐一、処理時間収集のための仕組みを組み込んだり、モジュールを入れ替える必要がなくなる。更に、複数のクライアント、リクエストから同じ関数が呼ばれた場合であっても、クライアント、リクエストに対応した関数の処理時間を収集することができる。
The execution method information 58 stores the function name (method name) of the caller. Therefore, nothing is stored in the process of FIG.
According to the above-described system, it is not necessary to incorporate a mechanism for collecting processing time or replace modules for each source code of the application program. Furthermore, even when the same function is called from a plurality of clients and requests, the processing times of the functions corresponding to the clients and requests can be collected.

上述した実施例の動作を概略的に示す図面として図9、図10を示すものとし、以下、図9、図10について簡単に説明するものとする。
上記の通り、図9は上述した実施例のWeb/Apサーバ10の動作を概略的に示す図であり、図10はそのフローチャート図である。
FIG. 9 and FIG. 10 are shown as drawings schematically showing the operation of the above-described embodiment, and FIG. 9 and FIG. 10 are briefly described below.
As described above, FIG. 9 is a diagram schematically showing the operation of the Web / Ap server 10 of the above-described embodiment, and FIG. 10 is a flowchart thereof.

図9に示す動作は、既に説明してある通りであり、任意のクライアント100のブラウザから任意のHTTPリクエストがあると、第1の性能データ収集プログラム(Servletフィルタ)16が、セッション情報(セッションID、リクエストID)の記憶や、上記各種情報のログ出力を行う。そして、リクエストに応じたJavaアプリケーションを実行させる。これにより、JSP/Servlet11は、各メソッド(Javaクラス12)を実行させ、Javaクラス12は上記呼び出し処理が挿入されているものである場合には、この呼び出し処理実行のタイミングで第2の性能データ収集プログラム(Javaクラス)17を呼び出す。本例では、上記の通り、一例として、Javaクラス12(関数)の実行開始と終了時のタイミングで、呼び出し処理が実行されるものである。   The operation shown in FIG. 9 is as described above. When there is an arbitrary HTTP request from the browser of an arbitrary client 100, the first performance data collection program (Servlet filter) 16 performs session information (session ID). , Request ID) and log output of the various information. Then, a Java application corresponding to the request is executed. As a result, the JSP / Servlet 11 causes each method (Java class 12) to be executed. If the Java class 12 has the call process inserted therein, the second performance data is obtained at the timing of the call process execution. The collection program (Java class) 17 is called. In this example, as described above, as an example, the calling process is executed at the start and end timing of the Java class 12 (function).

これより、図示の通り、第2の性能データ収集プログラム(Javaクラス)17は、Javaクラス12(関数)の実行開始と終了時のタイミングで、それぞれ、上記ログ出力処理を行うことになる。   As a result, as shown in the figure, the second performance data collection program (Java class) 17 performs the log output processing at the start and end timings of the Java class 12 (function).

そして、リクエストに応じたJavaアプリケーション処理が全て終了したら、第1の性能データ収集プログラム(Servletフィルタ)16は、レスポンス通過の際に、上記ログ出力を行う。更に、セッション情報を解除する。すなわち、上記スレッド固有変数領域31に格納したセッション情報を消去する。   When all the Java application processes corresponding to the request are completed, the first performance data collection program (Servlet filter) 16 outputs the log when the response passes. Further, the session information is canceled. That is, the session information stored in the thread specific variable area 31 is deleted.

図10は、図9に対応する概略的な処理フローチャート図である。よって、必ずしも実際の動作と一致するものではないが(実際の動作は図5、図6、図7等で既に説明してある)、以下、簡単に説明するものとする。   FIG. 10 is a schematic process flowchart corresponding to FIG. Therefore, although it does not necessarily coincide with the actual operation (the actual operation has already been described in FIG. 5, FIG. 6, FIG. 7, etc.), it will be briefly described below.

図10において、任意のリクエストを受信すると(ステップS31)、生成されるセッションID、リクエストIDを上記スレッド固有変数領域31に格納し、当該リクエストに応じた関数(Javaクラス12)が実行される毎に(ステップS33)、上記の例で
は関数処理開始時(ステップS34,YES)及び終了時(ステップS36,YES)にそれぞれ、上記各種情報(セッションID、リクエストID、日付時刻情報等)から成る性能データを取得して(ステップS35,S37)、ログファイル41に書き込む(ステップS39)。
In FIG. 10, when an arbitrary request is received (step S31), the generated session ID and request ID are stored in the thread specific variable area 31, and each time a function (Java class 12) corresponding to the request is executed. (Step S33), in the above example, the performance composed of the various information (session ID, request ID, date / time information, etc.) at the start of the function processing (Step S34, YES) and at the end (Step S36, YES). Data is acquired (steps S35 and S37) and written to the log file 41 (step S39).

図11に、上記ログファイル41に書き込まれたログデータの一例を示す。
図示の通り、ログファイル41には、任意の同一のセッションID及びリクエストIDの組み合わせ毎に、この同一のセッションID及びリクエストIDによるURL57(ここでは省略して示す)へのアクセスに応じて実行された、すなわち任意のクライアント(ブラウザ)からの任意のリクエストに応じて実行された一連の関数処理等のログデータ(性能データ)が、書き込まれた順番通りに(ログ出力処理実行順に)格納されている。
FIG. 11 shows an example of log data written in the log file 41.
As shown in the figure, the log file 41 is executed for each combination of any identical session ID and request ID in response to access to the URL 57 (not shown here) by the same session ID and request ID. In other words, log data (performance data) such as a series of function processing executed in response to an arbitrary request from an arbitrary client (browser) is stored in the order in which it was written (log output processing execution order). Yes.

また、同図の例では、実行メソッド情報58として、α、βが格納されており、これはメソッド名(関数名)α、βの2つの関数が、セッションID=‘1122’及びリクエストID=‘3’によるURL57(ここでは省略して示す)へのアクセスに応じて実行されたことを意味する。   Also, in the example of the figure, α and β are stored as the execution method information 58. This is because the two functions of method names (function names) α and β have a session ID = “1122” and a request ID = It means that the processing is executed in response to access to URL 57 (not shown here) by “3”.

上記メソッド(関数)α、βの実行に関する4つのレコードが、実行メソッド情報58及び開始/終了56が「α;開始」→「β;開始」→「β;終了」→「α;終了」という順番に格納されているのは、メソッドα実行中にメソッドβが呼び出されたことを意味している。つまり、基本的に「開始」が複数連続するのは、任意の関数を呼び出していることを意味している。この様に、ログファイル41には、各関数の開始、終了のタイミングでログ出力された順番にレコードが記録されているので、上記の通り他の関数等の呼び出し関係を解析することができる。   The four records related to the execution of the above methods (functions) α and β are that the execution method information 58 and the start / end 56 are “α; start” → “β; start” → “β; end” → “α; end”. Stored in order means that the method β is called during the execution of the method α. In other words, a plurality of “starts” that are consecutive means that an arbitrary function is being called. In this way, since records are recorded in the log file 41 in the order of log output at the start and end timing of each function, it is possible to analyze the calling relationship of other functions as described above.

また、図示の一連のレコードの最初と最後のレコードには、実行メソッド情報58(関数名)が記録されていないが、これは、上記第1の性能データ収集プログラム(Servletフィルタ)16による上記HTTPリクエスト受付時及び応答時のログ出力処理によって記録されたレコードであることを意味する。この第1の性能データ収集プログラム(Servletフィルタ)16による上記HTTPリクエストの受付及び応答に係る処理を「リクエスト受付・応答処理」と呼ぶものとする。従って、ログファイル41には、任意の同一のセッションID及びリクエストIDの組み合わせ毎に、「リクエスト受付・応答処理」に係るレコードと、各関数実行(開始/終了)に係るレコードとが記録されることになる(例えば、ログ記録処理の際に、セッションID及びリクエストIDをキーにしてログファイル41を検索して、該当するレコード群の最後に新たなレコードを追加すればよい)。   In addition, the execution method information 58 (function name) is not recorded in the first and last records in the illustrated series of records. This is because the HTTP is executed by the first performance data collection program (Servlet filter) 16. This means that the record is recorded by the log output process at the time of request reception and response. Processing related to reception and response of the HTTP request by the first performance data collection program (Servlet filter) 16 is referred to as “request reception / response processing”. Therefore, in the log file 41, a record related to “request reception / response processing” and a record related to each function execution (start / end) are recorded for each combination of any identical session ID and request ID. (For example, in the log recording process, the log file 41 may be searched using the session ID and request ID as keys, and a new record may be added to the end of the corresponding record group).

尚、図11では、日付時刻情報(年月日時分秒.ミリ秒51)は、年月日時は省略し、分秒.ミリ秒のみ示してある。また、上記の通りURL57の具体例は省略してある。
以下、上述したようにして収集した性能データを分析して表示する処理について説明する。
In FIG. 11, the date / time information (year / month / day / hour / minute / second.millisecond 51) omits the year / month / date / time, and the minute / second. Only milliseconds are shown. Further, as described above, a specific example of the URL 57 is omitted.
Hereinafter, processing for analyzing and displaying performance data collected as described above will be described.

本例では、性能データを可視化表示(表、バー、グラフ等による表示)する為に、まず、上記ログファイル41のデータを、表、グラフ等の表示の元となる内部データに変換する。この変換処理の一例を図12に示す。また、内部データ構造の一例を図13、図14等に示す。尚、図12の処理は、図13の例に応じた処理例である。   In this example, in order to visualize the performance data (display with a table, bar, graph, etc.), first, the data of the log file 41 is converted into internal data that is the basis of display of the table, graph, etc. An example of this conversion process is shown in FIG. An example of the internal data structure is shown in FIGS. Note that the processing of FIG. 12 is a processing example corresponding to the example of FIG.

図13は、内部データ構造に係る概略的な階層構造を示す図である。
まず、図13に示すように、各内部データを格納する不図示の内部データファイルは、例えば階層0、階層1、階層2、・・等の階層構造を有する。階層0は最上位階層である。
FIG. 13 is a diagram showing a schematic hierarchical structure related to the internal data structure.
First, as shown in FIG. 13, an internal data file (not shown) for storing each internal data has a hierarchical structure such as a hierarchy 0, a hierarchy 1, a hierarchy 2,. Layer 0 is the highest layer.

階層1は各クライアント(ブラウザ)毎に対応する階層である。つまり、これまでに当該Webサーバにアクセスした記録が無い(少なくとも内部データには無い)新たなクライアント(ブラウザ)毎からのアクセスがある毎に、新たな階層1のデータが作成される。   Layer 1 is a layer corresponding to each client (browser). In other words, each time there is an access from each new client (browser) that has not been accessed to the Web server so far (at least not in the internal data), a new data of level 1 is created.

そして、各階層1毎に、この階層1のクライアント(ブラウザ)から任意のリクエストがある毎に、その階層1内に新たな階層2の内部データが作成される。
尚、ここでは階層1と階層2とに分けて考えているが、実際には上述した通り(そして図14等に示す通り)任意の「セッションID及びリクエストID」の組み合わせを1単位とする性能データ収集・記録が行われるわけであるので、図示の階層1、階層2のデータに関しては特に説明しない。階層1と階層2とから成るデータは、上記「リクエスト受付・応答処理」に係る性能データに基づいて作成される内部データであると考えてよい。
Then, for each level 1, every time there is an arbitrary request from the client (browser) of level 1, new internal data of level 2 is created in the level 1.
Here, the hierarchy is considered to be divided into the hierarchy 1 and the hierarchy 2, but in reality, as described above (and as shown in FIG. 14 and the like), the performance with an arbitrary combination of “session ID and request ID” as one unit Since data collection / recording is performed, the data of the illustrated hierarchy 1 and hierarchy 2 will not be described in particular. The data composed of the hierarchy 1 and the hierarchy 2 may be considered as internal data created based on the performance data related to the “request reception / response process”.

そして、各階層2毎に、そのリクエストに応じた関数が実行される毎に記録されたログデータがある毎に、該関数に応じた新たな階層3の内部データが作成される。更に、この階層3の関数の実行中に呼び出された別の関数に関するログデータがある毎に、該別の関数に応じた新たな階層4の内部データが作成される。   Then, every time there is log data recorded every time a function corresponding to the request is executed for each level 2, new internal data of the level 3 corresponding to the function is created. Further, whenever there is log data relating to another function called during execution of the function of the layer 3, new internal data of the layer 4 corresponding to the other function is created.

上記図13に示す階層構造に応じた上記内部データへの変換処理について、図12を参照して説明する。
図12の処理は、任意のログファイル41を対象として、このログファイル41に格納されている性能データを1行(1レコード)ずつ読み出して(ステップS41)、読み出したレコードについてステップS42以降の処理を実施する。
The conversion process to the internal data according to the hierarchical structure shown in FIG. 13 will be described with reference to FIG.
In the process of FIG. 12, the performance data stored in the log file 41 is read line by line (1 record) for an arbitrary log file 41 (step S41), and the processes after step S42 are performed for the read record. To implement.

まず、読み出したレコードのセッションIDを用いて内部データファイル内を検索して、同一のセッションIDの階層1があるか否かをチェックし(ステップS42)、無い場合には(ステップS42,NO)、このセッションID(クライアント(ブラウザ))に応じた新たな階層1を内部データファイル内に作成し、これを階層0の最後(既に作成されている階層1群の最後の階層1の後)に追加する(ステップS43)。   First, the internal data file is searched using the session ID of the read record to check whether or not there is a hierarchy 1 with the same session ID (step S42). , A new hierarchy 1 corresponding to this session ID (client (browser)) is created in the internal data file, and this is added at the end of hierarchy 0 (after the last hierarchy 1 of the group 1 already created). It adds (step S43).

更に、読み出したレコードのリクエストIDに応じた階層2を新規作成して、これを階層1(ここでは新たに作成した階層1)の最後に追加する。更に、主記憶上に設けられる任意の記憶領域(又は変数)(以下、“開始状態”と呼ぶ)に、当該レコードのURL57を記憶する(ステップS45)。尚、この例に限らず、“開始状態”として「関数無し」等と記録してもよい。   Furthermore, a new hierarchy 2 corresponding to the request ID of the read record is newly created and added to the end of hierarchy 1 (here, newly created hierarchy 1). Furthermore, the URL 57 of the record is stored in an arbitrary storage area (or variable) (hereinafter referred to as “start state”) provided on the main memory (step S45). Note that the present invention is not limited to this example, and “no function” may be recorded as the “start state”.

また、ステップS42がYESでステップS44がNOの場合も、ステップS45の処理が行われる。ステップS44は、上記同一セッションIDの階層1内に、読み出したレコードのリクエストIDと同一のリクエストIDの階層2があるか否かを判定する処理である。   Moreover, also when step S42 is YES and step S44 is NO, the process of step S45 is performed. Step S44 is a process of determining whether or not there is a hierarchy 2 with the same request ID as the request ID of the read record in the hierarchy 1 with the same session ID.

ステップS45の処理後は、ステップS51の判定処理へ移行し、ログファイル41内の全てのレコードの読み込みが完了しない限り、ステップS51の判定はNOとなってステップS41へ戻り、次のレコードの読み込みを行うことになる。   After the process of step S45, the process proceeds to the determination process of step S51, and unless the reading of all records in the log file 41 is completed, the determination of step S51 is NO and the process returns to step S41 to read the next record. Will do.

尚、階層2以下(階層2、階層3、階層4・・・等)の階層の新規作成に際しては、上記読み出したレコードの各データ(年月日時分秒.ミリ秒51、セッションID53、リクエストID54、URL57、実行メソッド情報58)を、その階層情報(‘2’、‘3’、‘4’等)と共に、内部データファイルに新規追加レコードとして記憶する処理も
行われる。その際、年月日時分秒.ミリ秒51は、後述する開始日時64として記憶される。
It should be noted that when creating a new hierarchy below hierarchy 2 (hierarchy 2, hierarchy 3, hierarchy 4..., Etc.), each data (year / month / day / hour / minute / second / millisecond 51, session ID 53, request ID 54) of the read record. , URL 57 and execution method information 58) are also stored in the internal data file as a newly added record together with the hierarchy information ('2', '3', '4', etc.). In that case, year, month, day, hour, minute, second. The millisecond 51 is stored as a start date 64 described later.

上述したステップS45の処理により任意のリクエストIDに応じた新規階層2が作成された後、次以降のレコードがログファイル41から読み込まれると、上記図11に示す例のように、これらレコードはこのリクエストに応じて実行される各関数に関する性能データである。よって、ステップS42、S44の判定はYESとなり、ステップS46の処理が実行される。ステップS46の処理では上記“開始状態”に任意の関数名(ここでは関数名αとする)が記憶されているか否かを判定する。上記ステップS45の直後のレコードに関する処理では、上記の通り関数名ではなくURLが記憶されているので、ステップS46の判定はNOとなり、ステップS47の処理へ移行する。   After the new hierarchy 2 corresponding to an arbitrary request ID is created by the process of step S45 described above, when the next and subsequent records are read from the log file 41, these records are displayed as shown in the example shown in FIG. It is performance data regarding each function executed in response to a request. Accordingly, the determinations at steps S42 and S44 are YES, and the process at step S46 is executed. In the process of step S46, it is determined whether an arbitrary function name (here, function name α) is stored in the “start state”. In the process related to the record immediately after step S45, since the URL is stored instead of the function name as described above, the determination in step S46 is NO, and the process proceeds to step S47.

ステップS47の処理では、読み込んだレコード(任意の関数に関する性能データ)に関する階層3を新規作成し、階層2の最後に記憶する。そして、上記“開始状態”に当該レコードの関数名(実行メソッド情報58)を関数名αとして記憶する。そして、ステップS51の判定を経てステップS41に戻る。   In the process of step S47, a new hierarchy 3 relating to the read record (performance data related to an arbitrary function) is newly created and stored at the end of hierarchy 2. Then, the function name (execution method information 58) of the record is stored as the function name α in the “start state”. And it returns to step S41 through determination of step S51.

次に読み込むレコードに関しては、ステップS42,S44,S46の判定がYESとなり、ステップS48の処理に移行する。ステップS48では、読み込んだレコードの開始/終了56が“開始”、“終了”の何れであるかを判定する。もし、上記関数名αの関数(メソッド)が更に別の関数を呼び出すものではなかったなら、ステップS48の判定は「終了」となるものであり、ステップS49の処理へ移行する。   For the next record to be read, the determinations in steps S42, S44, and S46 are YES, and the process proceeds to step S48. In step S48, it is determined whether the start / end 56 of the read record is “start” or “end”. If the function (method) having the function name α does not call another function, the determination in step S48 is “end”, and the process proceeds to step S49.

ステップS49では、当該関数名αの関数に関する内部データおける後述する終了日時65に、読み込んだレコードの年月日時分秒.ミリ秒51を記憶する。更に、開始日時64と終了日時65との時間差を求め、これを経過時間66に記憶する。これにより、当該関数名αに関する表示用等の内部データは、図14に示す61〜69の各データ項目のうち、実行時間67を除いて全て記録されることになる。尚、実行時間67の算出・記録処理については後に説明する。   In step S49, the year / month / day / hour / minute / second of the record read at the end date / time 65 described later in the internal data related to the function of the function name α. Memories 51 are stored. Further, a time difference between the start date and time 64 and the end date and time 65 is obtained and stored in the elapsed time 66. As a result, all the internal data for display related to the function name α is recorded except for the execution time 67 among the data items 61 to 69 shown in FIG. The calculation / recording process of the execution time 67 will be described later.

ステップS49では、最後に、上記“開始状態”に現在の階層の親階層の関数名(関数名が無い場合にはURL)を記憶する。
一方、上記関数名αの関数(メソッド)が更に別の関数を呼び出していたならば、当該読み込んだレコードは、例えば図11の例における「α;開始」のレコードの次の「β;開始」のレコードのように、呼び出された関数の「開始」時のレコードであるので、ステップS48の判定は「開始」となり、ステップS50の処理に移る。
In step S49, finally, the function name of the parent hierarchy of the current hierarchy (URL if there is no function name) is stored in the “start state”.
On the other hand, if the function (method) of the function name α has called another function, the read record is, for example, “β; start” next to the record of “α; start” in the example of FIG. Thus, since the called function is a record at the time of “start”, the determination in step S48 is “start”, and the process proceeds to step S50.

ステップS50では、「関数αの階層+1」の階層(ここでは階層4)を新規作成し、これを当該関数αの階層内の最後に追加する。そして、上記“開始状態”に当該読み込んだレコードの関数名(実行メソッド情報58)を新たな関数名αとして記憶する(ステップS50)。   In step S50, a layer of “layer α of function α + 1” (here, layer 4) is newly created and added to the end of the layer of function α. Then, the function name (execution method information 58) of the read record is stored as a new function name α in the “start state” (step S50).

その後、開始/終了56が「終了」のレコードが読み込まれると、ステップS48の判定は当然「終了」となり、ステップS49の処理が実行されることになる。
尚、例えば図11に示すように、同一のセッションID・リクエストIDを有するレコード群の最後には、上記「リクエスト受付・応答処理」の応答処理で記録されたレコードが格納されていることになるので、図12には特に示していないが、当該最後のレコードを読み込んだ場合には(関数名が無いこと等で判定できる)、上記ステップS45で作成されていた階層2の内部データを完成させる。すなわち、当該階層2の内部データの後述する終了日時65に、読み込んだレコードの年月日時分秒.ミリ秒51を記憶すると共に
、経過時間66等を算出して記憶する。
Thereafter, when a record whose start / end 56 is “end” is read, the determination in step S48 is naturally “end”, and the processing in step S49 is executed.
For example, as shown in FIG. 11, at the end of the record group having the same session ID / request ID, a record recorded in the response process of the “request reception / response process” is stored. Therefore, although not particularly shown in FIG. 12, when the last record is read (determined by the absence of a function name or the like), the internal data of layer 2 created in step S45 is completed. . That is, at the end date and time 65 (to be described later) of the internal data of the hierarchy 2, the year, month, date, hour, minute, second, and second of the read record. The millisecond 51 is stored, and the elapsed time 66 is calculated and stored.

図14に示す表示用の内部データ60は、階層61、URL62、関数名63、開始日時64、終了日時65、経過時間66、実行時間67、セッションID68、及びリクエストID69の各データ項目より成る。   The internal data 60 for display shown in FIG. 14 includes data items of a hierarchy 61, a URL 62, a function name 63, a start date and time 64, an end date and time 65, an elapsed time 66, an execution time 67, a session ID 68, and a request ID 69.

階層61には、上記階層1,2,3等の階層を示す数値が格納される。階層は、上記の通り、関数等のネストの深さを示すものである。
URL62、関数名63には、それぞれ、上記URL57、実行メソッド情報58が格納される。同様に、セッションID68、リクエストID69には、それぞれ、セッションID53、リクエストID54が格納される。
In the hierarchy 61, numerical values indicating the hierarchy such as the hierarchy 1, 2, 3, etc. are stored. As described above, the hierarchy indicates the depth of nesting of functions and the like.
The URL 62 and the function name 63 store the URL 57 and the execution method information 58, respectively. Similarly, a session ID 53 and a request ID 54 are stored in the session ID 68 and the request ID 69, respectively.

開始/終了56が「開始」のレコードの日付時刻情報(年月日時分秒.ミリ秒51)が開始日時64に格納され、開始/終了56が「終了」のレコードの日付時刻情報(年月日時分秒.ミリ秒51)が終了日時65に格納される。   The date / time information (year / month / day / hour / minute / second.millisecond 51) of the record whose start / end 56 is “start” is stored in the start date / time 64, and the date / time information (year / month) of the record whose start / end 56 is “end”. Date / time / minute / second / millisecond 51) is stored in the end date / time 65.

経過時間66は、上記の通り、開始日時64と終了日時65との時間差(終了日時65−開始日時64)である。つまり、経過時間66は、例えば、各関数の処理開始から終了までの時間を意味する。但し、各関数に限らず、例えば図11に示す最初と最後のレコードから生成される内部データは、上記「リクエスト受付・応答処理」に係る内部データということになり、この場合の経過時間66は、リクエスト受付から応答までの時間を意味することになる。   The elapsed time 66 is the time difference between the start date and time 64 and the end date and time 65 (end date and time 65-start date and time 64) as described above. That is, the elapsed time 66 means, for example, the time from the start to the end of processing of each function. However, not limited to each function, for example, the internal data generated from the first and last records shown in FIG. 11 is the internal data related to the “request reception / response process”, and the elapsed time 66 in this case is It means the time from request reception to response.

本例では、リクエストは任意のURLへのアクセスを例にしており、この例では上記「リクエスト受付・応答処理」に係る経過時間66は、任意のURL(ホームページ)アクセスに係る処理全体の最初から最後までの時間を意味することになる。また、上記「リクエスト受付・応答処理」には、単なる受付、応答の処理だけでなく、各関数の呼び出し処理も含まれる。   In this example, the request is an example of access to an arbitrary URL, and in this example, the elapsed time 66 related to the “request reception / response process” is from the beginning of the entire process related to an arbitrary URL (homepage) access. It means the time until the end. The “request reception / response processing” includes not only simple reception and response processing but also call processing of each function.

この様な「リクエスト受付・応答処理」のことを、以下「URL」と呼ぶものとする。
従って、上記「リクエスト受付・応答処理」に係る経過時間66は、「URL」に係る経過時間66と表現できる。また、これより、経過時間66とは、「URL」/関数の処理開始から終了までの時間を意味するものと言える。また、上記の通り「URL」は関数を呼び出すものであり、例えば図11に示す例では、「URL」は関数αを呼び出す。同様に図17に示す例では「URL」は、関数getDB()、関数setDB()を呼び出すものと表現できる。
Such “request reception / response processing” is hereinafter referred to as “URL”.
Therefore, the elapsed time 66 related to the “request reception / response process” can be expressed as the elapsed time 66 related to “URL”. From this, the elapsed time 66 can be said to mean the time from the start to the end of the “URL” / function processing. As described above, “URL” calls a function. For example, in the example shown in FIG. 11, “URL” calls a function α. Similarly, in the example illustrated in FIG. 17, “URL” can be expressed as calling the function getDB () and the function setDB ().

ここで、上記経過時間66には、「URL」/関数から呼び出した他の関数の処理に係る時間(当該他の関数の経過時間)も含まれる。経過時間66から当該他の関数の経過時間を除外したものが、実行時間67となる。   Here, the elapsed time 66 includes a time related to processing of another function called from “URL” / function (elapsed time of the other function). An execution time 67 is obtained by excluding the elapsed time of the other function from the elapsed time 66.

上記表示用の内部データ60について、以下、図15〜図17に示す具体例を参照して更に説明する。
図15は任意のリクエストに係る表示用の内部データ60の具体例であり、図16は図15に示す内部データ60の元となった性能データ50の一例を示す図である。図17は、図15に示す例に応じたリクエスト時の動作を示す図である。
The display internal data 60 will be further described below with reference to specific examples shown in FIGS.
FIG. 15 is a specific example of the internal data 60 for display related to an arbitrary request, and FIG. 16 is a diagram showing an example of the performance data 50 that is the basis of the internal data 60 shown in FIG. FIG. 17 is a diagram illustrating an operation at the time of a request according to the example illustrated in FIG.

図15に示すように、この例では、URL=“http//:localhost:8080/DBAccess.jsp”に対するアクセスがあり、セッションID=‘1234’且つリクエストID=‘1’が割り当てられたものとし、図15はこの場合に収集された図16の性能データ50から生成さ
れた表示用の内部データ60を示すものである。
As shown in FIG. 15, in this example, it is assumed that there is access to URL = “http //: localhost: 8080 / DBAccess.jsp”, and session ID = “1234” and request ID = “1” are assigned. FIG. 15 shows internal data 60 for display generated from the performance data 50 of FIG. 16 collected in this case.

尚、図13に示す例やこの例に対応する図12の処理では、上記の通り、セッションIDで1階層、リクエストIDで1階層という扱いにしていたが、これは1つの考え方を示すものであり、この例に限らない。本手法では、基本的に、任意のセッションIDとリクエストIDの組み合わせが示す各リクエスト毎に、性能データ50の収集が行われるので、当該各リクエスト毎の性能データ50の最初のレコード(すなわち上記「URL」によってログ出力されたレコード)に関する内部データ60には、図15に示すように階層1を与える。   In the example shown in FIG. 13 and the process of FIG. 12 corresponding to this example, the session ID is handled as one layer and the request ID is handled as one layer as described above, but this shows one way of thinking. There is no limitation to this example. In this method, basically, performance data 50 is collected for each request indicated by a combination of an arbitrary session ID and request ID. Therefore, the first record of performance data 50 for each request (that is, “ As shown in FIG. 15, the hierarchy 1 is given to the internal data 60 regarding the log output by “URL”.

尚、最初のレコードであるか否かは、例えば前回読み込んだ性能データ50のレコードのセッションIDとリクエストIDとを一時的に記憶して、これと今回読み込んだレコードのセッションIDとリクエストIDと比較して不一致である場合に、最初のレコードであると判定する。勿論、この例に限らない。   Whether it is the first record or not is temporarily stored, for example, the session ID and request ID of the record of the performance data 50 read last time, and this is compared with the session ID and request ID of the record read this time. If they do not match, the first record is determined. Of course, the present invention is not limited to this example.

すなわち、上記最初のレコードを含め、この最初のレコードと同一のセッションIDとリクエストIDを有する一連のレコードを順次読み込む毎に、そのレコードの開始/終了56が「開始」か「終了」かによって、「開始」であれば階層を+1し、「終了」であれば階層を−1する。ここでは、階層の初期値は‘0’とする。この例では、上記最初のレコードは当然「開始」であるので、「0+1」で上記の通り階層1が与えられる。   That is, each time a series of records having the same session ID and request ID as the first record including the first record are sequentially read, whether the record start / end 56 is “start” or “end”, If it is “start”, the hierarchy is incremented by one, and if it is “end”, the hierarchy is decremented by one. Here, the initial value of the hierarchy is “0”. In this example, since the first record is naturally “start”, “0 + 1” is given the hierarchy 1 as described above.

その後、例えば、その後のレコードが、「開始」→「開始」→「終了」→「終了」→「開始」→「終了」→「終了」であったならば、階層は、上記1から2→3→2→1→2→1となる。この例は、例えば最初に関数α実行開始し(これには階層2が与えられる)、関数αから関数βが呼び出され(これには階層3が与えられる)、関数βが終了し、更に関数αが終了した後に、関数γが実行される(これには階層2が与えられる)場合等である。   After that, for example, if the subsequent record is “start” → “start” → “end” → “end” → “start” → “end” → “end”, the hierarchy is changed from 1 to 2 → 3 → 2 → 1 → 2 → 1. In this example, for example, the execution of the function α is started first (this is given the hierarchy 2), the function β is called from the function α (this is given the hierarchy 3), the function β is terminated, and the function This is the case, for example, when the function γ is executed after this α is finished (this is given the hierarchy 2).

これは、図15、図17に示す例でいうと、まず、上記最初のレコードは当然「開始」であり、上記の通り階層1となり、2番目以降のレコードは、図17に示すように、関数名getDB()に係る「開始」→「終了」、更に関数名setDB()に係る「開始」→「終了」となり、最後に上記階層1に関する「終了」となる。よって、図15、図17に示すように、これら関数名getDB()とsetDB()に係る表示用の内部データ60の階層61は、共に‘2’となる。   In the example shown in FIGS. 15 and 17, first, the first record is naturally “start”, and becomes the hierarchy 1 as described above, and the second and subsequent records are as shown in FIG. “Start” → “End” related to the function name getDB (), “Start” → “End” related to the function name setDB (), and finally “End” related to the layer 1. Therefore, as shown in FIGS. 15 and 17, the hierarchy 61 of the display internal data 60 relating to these function names getDB () and setDB () is both “2”.

この様に、性能データ50においては「開始」、「終了」毎に別々のレコードであったものを、表示用の内部データ60では「URL」や各関数毎に1つにまとめて、開始日時、終了日時が記録され、更に階層や経過時間等が求められて記憶されている。尚、図14には示さないが、内部データ60に更に呼び出し元(上位階層)の関数の関数名も記憶するようにしてもよい。   In this way, the performance data 50 is a separate record for each “start” and “end”, and the internal data 60 for display is combined into one for each “URL” and each function. The end date and time is recorded, and the hierarchy and elapsed time are obtained and stored. Although not shown in FIG. 14, the function name of the function of the caller (upper layer) may be further stored in the internal data 60.

ここで、特に図示しないが、図14に示すデータ構造の内部データ作成処理について、以下、図15、図16に示す例も参照しながら説明する。尚、図16では、日付時刻情報(年月日時分秒.ミリ秒51)は、年月日時は省略し、分秒.ミリ秒のみ示してある。   Here, although not particularly shown, the internal data creation processing of the data structure shown in FIG. 14 will be described below with reference to the examples shown in FIGS. In FIG. 16, the date / time information (year / month / day / hour / minute / second.millisecond 51) omits the year / month / day / hour and omits the minute / second. Only milliseconds are shown.

この処理では、例えば上記ログファイル41(性能データ50)からレコードを1行読み込む毎に、まず、内部データ60の中に読み出したレコードのセッションID53及びリクエストID54と同一のセッションID68及びリクエストID69を有するデータが存在するか否かをチェックする。あるいは、このチェック処理は、前回読み込んだレコードのセッションID及びリクエストIDを一時的に保持しておき、これと一致するか否
かにより判定してもよい。
In this process, for example, every time one line of a record is read from the log file 41 (performance data 50), first, the session ID 53 and the request ID 69 that are the same as the session ID 53 and the request ID 54 of the read record are stored in the internal data 60. Check if data exists. Alternatively, in this check process, the session ID and request ID of the record read last time may be temporarily stored, and the determination may be made based on whether or not these match.

もし、同一のセッションID68及びリクエストID69を有するデータが存在しないならば(上記チェック結果がNOであるものとする)、このレコードは上記「URL」(特に第1の性能データ収集プログラム(Servletフィルタ)16)によってリクエスト受付時にログ出力されたレコード(同一のセッションID68及びリクエストID69を有するレコード群の最初のレコード)ということになる。   If there is no data having the same session ID 68 and request ID 69 (assuming that the check result is NO), this record is the “URL” (particularly the first performance data collection program (Servlet filter)). 16) is a record (first record in a record group having the same session ID 68 and request ID 69) that is output when a request is received.

もし、読み込んだレコードが上記最初のレコード(例えば図16に示すレコードaに相当)である場合には、まず、任意の変数(ここでは“階層変数”という)に初期値‘1’をセットする。   If the read record is the first record (e.g., corresponding to the record a shown in FIG. 16), first, an initial value “1” is set to an arbitrary variable (here, referred to as “hierarchical variable”). .

続いて、内部データ60に新たなレコードを追加し、このレコードの階層61に階層変数の値(ここでは上記の通り‘1’)を記憶する。更に、この内部データ60の新たなレコードの各データ項目に、上記ログファイル41から読み出したレコードにおける該当するデータ項目のデータをコピーする。すなわち、URL57、実行メソッド情報58、セッションID53、及びリクエストID54の各データを、それぞれ、URL62、関数名63、セッションID68、リクエストID69にコピー・記憶する。更に、この場合は、開始/終了56は「開始」となっているので、その日付時刻情報(年月日時分秒.ミリ秒51)を開始日時64にコピー・記憶する。尚、この場合、実行メソッド情報58は空白なので、図15の階層1のデータに示すように、関数名63は空白となる。   Subsequently, a new record is added to the internal data 60, and the value of the hierarchy variable (here, “1” as described above) is stored in the hierarchy 61 of this record. Further, the data of the corresponding data item in the record read from the log file 41 is copied to each data item of the new record of the internal data 60. That is, the URL 57, the execution method information 58, the session ID 53, and the request ID 54 are copied and stored in the URL 62, the function name 63, the session ID 68, and the request ID 69, respectively. Further, in this case, since the start / end 56 is “start”, the date / time information (year / month / day / hour / minute / second / millisecond 51) is copied and stored in the start date / time 64. In this case, since the execution method information 58 is blank, the function name 63 is blank as shown in the data of the hierarchy 1 in FIG.

この状態では、例えば図15に示す例では階層1の内部データのみが作成され且つこの内部データは未完成となっている。つまり、終了日時65、経過時間66、及び実行時間67は未だ記録されていない。   In this state, for example, in the example shown in FIG. 15, only the internal data of level 1 is created and this internal data is incomplete. That is, the end date / time 65, the elapsed time 66, and the execution time 67 are not yet recorded.

そして、次のレコードを読み込む。
上記最初のレコードの次以降の各レコードは、上記一連の処理の終了時のレコードまでは全て同一のセッションID68及びリクエストID69を有することになるので、上記チェック結果はYESの判定となり、その場合には以下の処理が実行される。
Then, the next record is read.
Since the records after the first record all have the same session ID 68 and request ID 69 until the record at the end of the series of processes, the check result is YES, and in that case The following processing is executed.

すなわち、まず、読み込んだレコードの開始/終了56を参照して、これが「開始」であるか「終了」であるかによって処理が分かれる。
まず、「開始」である場合には、まず、上記“階層変数”を+1インクリメントする。そして、上記最初のレコードの場合と同様にして、内部データ60に新たなレコードを追加し、このレコードの階層61に現在の“階層変数”の値を記憶すると共に、この内部データ60の新たなレコードの各データ項目に、読み出したレコードにおける該当するデータ項目のデータをコピーする。上記の通り、終了日時65、経過時間66、及び実行時間67以外の各データ項目のデータがコピー・記録される。
That is, first, referring to the start / end 56 of the read record, the processing is divided depending on whether it is “start” or “end”.
First, in the case of “start”, first, the “hierarchy variable” is incremented by +1. Then, in the same manner as in the case of the first record, a new record is added to the internal data 60, the current “hierarchy variable” value is stored in the hierarchy 61 of this record, and a new value of this internal data 60 is stored. The data of the corresponding data item in the read record is copied to each data item of the record. As described above, the data of each data item other than the end date and time 65, the elapsed time 66, and the execution time 67 is copied and recorded.

図16の例では、レコードaの次にレコードbが読み込まれ、階層変数は‘2’となり、図15に示すようにこの関数名getDB()に関する各データ(終了日時65、経過時間66、及び実行時間67は除く)が記録されることになる。   In the example of FIG. 16, the record b is read after the record a, the hierarchy variable becomes “2”, and each data (end date and time 65, elapsed time 66, and (Excluding the execution time 67) is recorded.

一方、読み込んだレコードの開始/終了56が「終了」である場合には、この「終了」レコードと対になる「開始」レコードによって既に内部データ60に新たなレコードが追加されているので(但し、上記の通り、未完成)、この対となる「開始」レコードを探して、このレコードを完成させる。   On the other hand, when the start / end 56 of the read record is “end”, a new record has already been added to the internal data 60 by the “start” record paired with this “end” record (however, , As described above, incomplete), and search for this “start” record to complete this record.

すなわち、例えばその階層61の値が現在の“階層変数”の値と同一であり且つ関数名
が同じであるレコードを検索して求める。そして、求めたレコードの終了時間65に読み込んだレコードの日付時刻情報(年月日時分秒.ミリ秒51)を記憶し、経過時間66を算出・記憶する。更に、可能であれば、実行時間67も算出・記憶する。実行時間67の算出方法は後に説明する。
That is, for example, a record in which the value of the hierarchy 61 is the same as the current “hierarchy variable” value and the function name is searched for and obtained. Then, the date / time information (year / month / day / hour / minute / second / millisecond 51) of the read record is stored in the end time 65 of the obtained record, and the elapsed time 66 is calculated and stored. Further, if possible, the execution time 67 is also calculated and stored. A method for calculating the execution time 67 will be described later.

この様にして、「終了」のレコードを読み込む毎に、内部データ60における未完成のレコードが完成する。図16の例では、レコードcが読み込まれることで、図15に示す関数getDB()に関する内部データが完成する。   In this way, each time an “end” record is read, an incomplete record in the internal data 60 is completed. In the example of FIG. 16, by reading the record c, the internal data regarding the function getDB () shown in FIG. 15 is completed.

読み込んだレコードの開始/終了56が「終了」である場合には、上記処理の後、最後に、“階層変数”を−1デクリメントする。そして、次のレコードを読み込むことになる。レコードcに関する処理では、最後に、階層変数=‘1’にしていることになる。   If the start / end 56 of the read record is “end”, the “hierarchy variable” is decremented by −1 at the end after the above processing. Then, the next record is read. In the process related to the record c, the hierarchy variable = “1” is finally set.

図16に示す例では、その後に更にレコードd、eが読み込まれ、図15に示すように、関数setDB()に関する内部データの新規レコード(階層=‘2’)が作成され、完成することになる。   In the example shown in FIG. 16, records d and e are further read after that, and as shown in FIG. 15, a new record (hierarchy = '2') of internal data relating to the function setDB () is created and completed. Become.

そして、最後にレコードfが読み込まれ、上記階層1のレコードが完成することになる。
ここで、上記実行時間67の算出処理について説明する。
Finally, the record f is read, and the record of the hierarchy 1 is completed.
Here, the calculation process of the execution time 67 will be described.

図17に示す例では、例えば階層1のレコードの経過時間66には、この階層1(上記「URL」)から呼び出される2つの関数(getDB()とsetDB())の経過時間66も含まれており、経過時間66からは階層1(「URL」)自体の処理に掛かった時間は分からない。これは各関数においても同様であり、図17では2つの関数(getDB()とsetDB())は他の関数を呼び出すものではないが、例えば図18(a)に示す例では、「URL」から呼び出された関数Aは関数Bを呼び出し、更にその後に「URL」から呼び出された関数Bは関数Cを呼び出している。   In the example shown in FIG. 17, for example, the elapsed time 66 of the record of level 1 includes the elapsed time 66 of two functions (getDB () and setDB ()) called from this level 1 (“URL” above). From the elapsed time 66, the time taken for processing of the hierarchy 1 (“URL”) itself is not known. This also applies to each function. In FIG. 17, the two functions (getDB () and setDB ()) do not call other functions. For example, in the example shown in FIG. The function A called from the function B calls the function B, and the function B called from the “URL” thereafter calls the function C.

図18(a)に図上太い縦線で示すものが、「URL」や各関数A,B,Cの経過時間66を示すものである。図示の通り、例えば関数Aの経過時間には当該関数Aから呼び出した関数Bの経過時間も含まれており、関数A自体の処理実行に要した時間は、経過時間からは分からない。よって、この例の場合、関数Aの経過時間から関数Bの経過時間を差し引いた時間を求めて、これを上記実行時間67とする。もし、他の関数を呼び出していない場合には、経過時間66=実行時間67となる。   A thick vertical line in FIG. 18A indicates the “URL” and the elapsed time 66 of each function A, B, C. As shown in the figure, for example, the elapsed time of the function A includes the elapsed time of the function B called from the function A, and the time required to execute the processing of the function A itself is not known from the elapsed time. Therefore, in the case of this example, a time obtained by subtracting the elapsed time of the function B from the elapsed time of the function A is obtained and set as the execution time 67. If no other function is called, elapsed time 66 = execution time 67.

このようにして実行時間67を求めると、図18(a)の場合、「URL」及び各関数の実行時間67は、図18(b)に図上太い縦線で示すものとなる。例えば、関数Aの実行時間67は、図示の「a1+a2」となる。この関数Aから呼び出された関数Bの実行時間67は、その経過時間66と同じとなる。また、その後に「URL」から呼び出された関数Bの実行時間は、図示の「b1+b2」となる。   When the execution time 67 is obtained in this way, in the case of FIG. 18A, the “URL” and the execution time 67 of each function are shown by thick vertical lines in FIG. 18B. For example, the execution time 67 of the function A is “a1 + a2” shown in the figure. The execution time 67 of the function B called from the function A is the same as the elapsed time 66. Further, the execution time of the function B called after “URL” is “b1 + b2” shown in the figure.

また、図17に示す例では、階層1(「URL」)の実行時間67は、図示の経過時間から、getDB()の経過時間とsetDB()の経過時間を差し引いた値となる。つまり、「URL」であっても関数であっても、それが直接呼び出した各関数の経過時間の総和を、自己の経過時間から差し引いた値が、その「URL」又は関数の実行時間として求められる。   In the example illustrated in FIG. 17, the execution time 67 of the hierarchy 1 (“URL”) is a value obtained by subtracting the elapsed time of getDB () and the elapsed time of setDB () from the illustrated elapsed time. In other words, whether it is a “URL” or a function, a value obtained by subtracting the total elapsed time of each function directly called from the own elapsed time is obtained as the execution time of the “URL” or function. It is done.

ここで、直接呼び出した関数は、上記のように図14には示さないがテーブル60に呼び出し元の関数の関数名も記憶するようにした場合には、これを参照すれば分かる。そうでない場合でも、階層と、開始日時64から終了日時65までの時間帯(以下、経過時間
帯と呼ぶ)を比較すれば、呼び出し関係が分かる。
Here, the directly called function is not shown in FIG. 14 as described above, but if the function name of the calling function is also stored in the table 60, it can be understood by referring to this. Even if this is not the case, the calling relationship can be understood by comparing the hierarchy and the time zone from the start date and time 64 to the end date and time 65 (hereinafter referred to as the elapsed time zone).

すなわち、任意の対象レコードの実行時間67を求める場合には、この対象レコードの階層の1つ下の階層(対象レコードの階層+1;例えば対象レコードの階層が‘2’であれば‘3’)の全てのレコードを抽出して、対象レコードの経過時間帯に、抽出した各レコードの経過時間帯が含まれるか否かを判定し、含まれるものは該当レコードとする。そして、全ての該当レコードの経過時間66の総和を、対象レコードの経過時間66から差し引くことで、対象レコードの実行時間67が求められる。   That is, when the execution time 67 of an arbitrary target record is obtained, the hierarchy immediately below the target record hierarchy (hierarchy of target record + 1; for example, “3” if the target record hierarchy is “2”) Are extracted, and it is determined whether or not the elapsed time zone of each extracted record is included in the elapsed time zone of the target record. Then, the execution time 67 of the target record is obtained by subtracting the sum of the elapsed time 66 of all the corresponding records from the elapsed time 66 of the target record.

例えば図15に示す例において、図示の階層1(「URL」)のレコードを対象レコードした場合、この対象レコードの経過時間帯は、年月日時を省略すると、「40:00.848〜40:30.848」となる。また、この対象レコードの階層は‘1’であるので、階層が‘2’であるレコードを抽出すると、図示の関数名getDB()とsetDB()の2つのレコードが抽出される。   For example, in the example shown in FIG. 15, when a record of the illustrated hierarchy 1 (“URL”) is a target record, the elapsed time zone of this target record is “40: 00.848 to 40: 30.848” if the year, month, and date are omitted. It becomes. Further, since the hierarchy of the target record is “1”, when a record whose hierarchy is “2” is extracted, two records of the function names getDB () and setDB () shown in the figure are extracted.

そして、各抽出レコードの経過時間帯は、図示の通り、「40:10.848〜40:15.848」と「40:20.848〜40:25.848」であり、何れも上記対象レコードの経過時間帯「40:00.848〜40:30.848」に含まれるので、両方とも上記該当レコードとなる。   As shown in the figure, the elapsed time zones of each extracted record are “40: 10.848 to 40: 15.848” and “40: 20.848 to 40: 25.848”, both of which are the elapsed time zones of the target record “40: 00.848”. -40 to 40.848 ", both are the above records.

そして、対象レコードの経過時間は30000(ミリ秒)であり、上記各該当レコードの経過時間はそれぞれ、5000(ミリ秒)と5000(ミリ秒)であるので、
対象レコードの実行時間67=30000−(5000+5000)=20000(ミリ秒)
となる。
And the elapsed time of the target record is 30000 (milliseconds), and the elapsed time of each corresponding record is 5000 (milliseconds) and 5000 (milliseconds),
Execution time 67 of target record = 30000-(5000 + 5000) = 20000 (milliseconds)
It becomes.

尚、既に説明してあるが、上記図15、図17の説明における「URL」や図18(a)、(b)に示す「URL」とは、主に第1の性能データ収集プログラム(Servletフィルタ)16とJSP/Servlet11によって実行される処理を意味する。換言すれば、任意のURLへのアクセスに係る処理のうち、各関数によって実行される処理以外の処理を意味する。例えば図17に示すURLの処理(階層1の処理)の経過時間は、URL=“http//:localhost:8080/DBAccess.jsp”に対するアクセスのリクエスト受信から応答までの時間を意味する。   Although already described, the “URL” in the description of FIGS. 15 and 17 and the “URL” shown in FIGS. 18A and 18B are mainly the first performance data collection program (Servlet Filter) 16 and processing executed by the JSP / Servlet 11. In other words, it means a process other than the process executed by each function among the processes related to access to an arbitrary URL. For example, the elapsed time of URL processing (layer 1 processing) shown in FIG. 17 means the time from reception of an access request to response to URL = “http / :: localhost: 8080 / DBAccess.jsp”.

更に、上述したアプリケーションプログラムの性能データ収集の際に、OS/ミドルウェアの性能データ(リソース状況を示す各種データ)も収集しておく。OS/ミドルウェアのリソース状況を示す各種データの収集は、例えば従来で説明したように、例えばWindows(登録商標)のパフォーマンスモニタ等の既存の機能により実現できる。   Furthermore, OS / middleware performance data (various data indicating resource status) is also collected when collecting the performance data of the application program described above. Collection of various data indicating the resource status of the OS / middleware can be realized by an existing function such as a performance monitor of Windows (registered trademark), for example, as described above.

そして、上述した処理によって生成された上記表示用の内部データ60と、OS/ミドルウェアのリソース状況を、同一時間軸上にプロットして表示することで、例えば図19(a)のような表示が行われる。表示用の内部データ60に関しては、図示の例では、セッション・リクエスト毎の処理に掛かった時間(処理時間)を示すバーが表示される(例えば上記階層1(「URL」)の経過時間66に基づき表示する)。尚、図上では、セッション毎としているが、実際には、任意のセッションIDとリクエストIDとの組み合わせ毎に表示する。   Then, by plotting and displaying the internal data for display 60 generated by the above-described processing and the OS / middleware resource status on the same time axis, for example, a display as shown in FIG. Done. Regarding the internal data 60 for display, in the illustrated example, a bar indicating the time (processing time) required for processing for each session request is displayed (for example, at the elapsed time 66 of the hierarchy 1 (“URL”)). Display based on). In the figure, each session is shown, but actually, it is displayed for each combination of an arbitrary session ID and request ID.

この表示処理や上述した内部データ生成処理を行うコンピュータ装置は、Web/Apサーバ10であってもよいし、他の任意の情報処理装置であってもよい。何れにしても、上述した各関数等の性能データ収集、OS/ミドルウェアのリソース状況を示す各種データの収集、表示用の内部データの生成、この内部データに基づく表示を行う装置/システム全体を、性能データ収集・表示システムと呼ぶものとする。   The computer apparatus that performs the display process and the internal data generation process described above may be the Web / Ap server 10 or any other information processing apparatus. In any case, the apparatus / system as a whole that collects performance data such as the functions described above, collects various data indicating the OS / middleware resource status, generates internal data for display, and displays based on the internal data. It shall be called a performance data collection / display system.

あるいは、既に、上述した各関数等の性能データ収集、及びOS/ミドルウェアのリソース状況を示す各種データの収集が行われて記憶されていることを前提として、これら収集・記憶されているデータに基づいて、表示用の内部データの生成、この内部データに基づく表示を行う装置のことを、性能データ表示装置と呼ぶものとする。   Alternatively, based on the data collected and stored on the assumption that the performance data collection of each function described above and various data indicating the OS / middleware resource status have already been collected and stored. An apparatus that generates internal data for display and performs display based on the internal data is referred to as a performance data display apparatus.

また、図19(a)のような表示を行うだけであれば、上記の通り階層1の経過時間66のデータのみで表示可能であるが、実際には、例えば図示のセッション1の表示として、例えば図15に示すセッションID=‘1234’、リクエストID=‘1’の内部データを全て取得して表示する。   Further, if only the display as shown in FIG. 19A is performed, it is possible to display only with the data of the elapsed time 66 of the hierarchy 1 as described above. For example, all the internal data of session ID = '1234' and request ID = '1' shown in FIG. 15 is acquired and displayed.

よって、図19(a)には示されないが、例えば図19(b)の拡大表示が示すように、上記セッション・リクエスト毎の処理時間を示すバーは、各URL/関数毎の実行時間を示す処理時間バーが結合されたものとして生成されている(例えば各関数毎に色を変える等、区別がつくように表示する)。つまり、例えば、図18(b)に示すものが図19(b)に示すように1本のバー形状で示されているものであり、表示の形態は変わっていても内容的には図18(b)と示すものと略同様である。尚、図19(b)には示していないが、バー内に各関数の関数名等を表示するようにしてもよい。   Therefore, although not shown in FIG. 19A, as shown in the enlarged display of FIG. 19B, for example, the bar indicating the processing time for each session request indicates the execution time for each URL / function. It is generated as a combination of processing time bars (for example, different colors are displayed for each function and displayed so as to be distinguished). That is, for example, what is shown in FIG. 18 (b) is shown in a single bar shape as shown in FIG. 19 (b). This is substantially the same as that shown in (b). Although not shown in FIG. 19B, the function name of each function may be displayed in the bar.

図19(a)、(b)に示すように、更に、上記OS/ミドルウェアのリソース状況を示す各種データに基づくグラフ等も、上記バーの表示に重ねて表示される。
図19(a)に示す表示画面では、OS/ミドルウェアのリソース状況の一例として、ディスクI/O(ディスクへの負荷量)が表示される(図では折れ線グラフのような表示となっている)。これをオペレータ等が視認することで、例えば、ディスクへの負荷量が増大している時間帯が分かり、更にこの時間帯に実行されたセッションが分かるので(図では主にセッション3が該当)、例えば図示のような矩形選択を行う(この例に限らず例えば該当セッションを直接指定する等)ことで、該当セッションの性能データが図19(b)に示すように拡大表示されることになる。
As shown in FIGS. 19A and 19B, a graph or the like based on various data indicating the resource status of the OS / middleware is also displayed superimposed on the bar display.
In the display screen shown in FIG. 19A, disk I / O (load amount to the disk) is displayed as an example of the resource status of the OS / middleware (displayed as a line graph in the figure). . By visually confirming this, for example, the time zone in which the load on the disk is increasing can be seen, and further the session executed during this time zone can be seen (mainly session 3 in the figure), For example, by selecting a rectangle as shown in the figure (not limited to this example, for example, by directly specifying the corresponding session), the performance data of the corresponding session is enlarged and displayed as shown in FIG.

上記の通り、図19(b)に示す拡大表示では、セッション3に係り実行された各関数の実行時間が表示されるので、オペレータ等はこの表示を参照したり、あるいは更に他の正常と思われる(処理時間が短い、あるいはディスクへの負荷量が小さい)セッションを比較の為に拡大表示する等して、性能が悪い関数((他と比較して)実行時間が長い関数;ディスク負荷量増加に影響を及ぼしている関数等)を容易に把握することができるようになる。   As described above, in the enlarged display shown in FIG. 19B, the execution time of each function executed in connection with the session 3 is displayed. Therefore, the operator or the like may refer to this display, or may be other normal. Functions that have poor performance (compared to others) (such as functions that have a long execution time; disk load) It is possible to easily grasp the functions that are affecting the increase).

尚、図19(a)に示す表示は、例えばオペレータ等が任意の時間帯(図の横軸の時間全体に相当)を指定することで表示されるが、この例に限らない。例えば、オペレータが任意のURLを指定することで、上記性能データ60のうちそのURL62が指定されたURLと同一である全てのデータが抽出された表示されるものであってもよい。この場合には、例えば、同一のURLへのアクセスであるにも係らず、他のセッションよりも極端に処理時間が長いセッションを特定することができる等、クライアント(ブラウザ)固有の問題があった場合に特定が容易となる。   The display shown in FIG. 19A is displayed when an operator or the like designates an arbitrary time zone (corresponding to the entire time on the horizontal axis in the figure), but is not limited to this example. For example, when the operator designates an arbitrary URL, all the data having the same URL 62 as the designated URL out of the performance data 60 may be extracted and displayed. In this case, there is a problem specific to the client (browser), for example, it is possible to specify a session whose processing time is extremely longer than that of other sessions despite access to the same URL. In some cases, identification becomes easy.

上記の例に限らず、例えば特定の関数名を指定して該当するデータを抽出させてその実行時間を表示させる等(この場合には、各データ毎にそのセッションID等も一緒に表示させる)、様々な検索条件を入力可能としてこの検索条件に応じた表示を行わせることができる。   Not limited to the above example, for example, by specifying a specific function name and extracting corresponding data and displaying the execution time (in this case, the session ID and the like are also displayed for each data) Various search conditions can be input, and display according to the search conditions can be performed.

図20(a)、(b)に他の表示例を示す。これら表示例は基本的には図19(a)、
図20と略同様の表示であり、図20(a)は任意に指定された時間帯のアプリケーション性能データやOS/ミドルウェアのリソース状況の表示画面であり、図20(b)は図20(a)の画面上でオペレータ等により任意に指定された部分(図上点線で示す矩形領域)の拡大表示画面である。
20A and 20B show other display examples. These display examples are basically shown in FIG.
20A is a display substantially similar to FIG. 20, FIG. 20A is a display screen of application performance data and OS / middleware resource status in an arbitrarily designated time zone, and FIG. 20B is a display screen of FIG. ) Is an enlarged display screen of a portion (rectangular region indicated by a dotted line in the figure) arbitrarily designated by an operator or the like.

図20(a)が図19(a)と異なる点は、まず、OS/ミドルウェアのリソース状況として、ディスクへの負荷量とCPU使用率の2種類が表示されている(図ではそれぞれ折れ線グラフのような表示となっている)点である。この様に、複数種類のリソース状況を表示させることもでき、アプリケーション性能データとリソース状況の対応関係が更に正確に行えるようになる。尚、上記表示は、例えば、OS/ミドルウェアのリソース状況を示す各種データのなかから、オペレータ等が任意の1又は複数の種類を指定して表示させることができる。   The difference between FIG. 20A and FIG. 19A is that the OS / middleware resource status is displayed in two types: the amount of load on the disk and the CPU usage rate (in the figure, each is a line graph). It is a point). In this way, a plurality of types of resource statuses can be displayed, and the correspondence between application performance data and resource statuses can be more accurately performed. The above display can be displayed by designating any one or a plurality of types by an operator or the like from various data indicating the OS / middleware resource status, for example.

更に、図20(a)では図19(a)に比べて短時間に多数のセッション・リクエスト毎の処理が実行された為、各セッション毎のバーの表示が密集して表示される為、図20(a)に示すように画面上では各セッション毎のバーが区別できない表示となっている。すなわち、画面上の時間tの位置(縦の点線で示す位置)をほぼ中心とする、画面の左上から右下に至る帯状の線が、各セッション毎のバーの表示が密集して成る表示となっている。この様に、あたかも1つの線のように密集して表示される場合もある。尚、バーの表示も折れ線グラフの表示も、グラフ表示の一種と見做してよいものとする。   Further, in FIG. 20 (a), since processing for each session request is executed in a shorter time than in FIG. 19 (a), the bar display for each session is displayed densely. As shown in FIG. 20 (a), the bar for each session is displayed on the screen indistinguishable. In other words, a band-like line from the upper left to the lower right of the screen, which is substantially centered at the position of time t on the screen (position indicated by a vertical dotted line), is a display in which the display of bars for each session is dense. It has become. In this way, there are cases where the images are displayed as densely as if they were one line. It should be noted that both the bar display and the line graph display may be regarded as a kind of graph display.

この様な表示であっても、OS/ミドルウェアのリソース状況の表示を参考にして、問題がありそうな特定の時間帯を上記矩形として指定することで、図20(b)に示すように拡大表示されるので、オペレータ等は、各セッション毎の処理時間や、各セッションに係る各関数の処理時間が分かり、問題があるセッションや関数を容易に把握することができる。尚、図20(b)は図19(b)とは異なり、複数のセッションについて表示されるが、この中から更に特定のセッションをオペレータ等が選択して拡大表示させることも当然可能である。   Even in such a display, referring to the display of the resource status of the OS / middleware, a specific time zone that is likely to have a problem is designated as the rectangle, and the display is enlarged as shown in FIG. Since it is displayed, the operator or the like knows the processing time of each session and the processing time of each function related to each session, and can easily grasp the problematic session or function. FIG. 20B differs from FIG. 19B in that a plurality of sessions are displayed, but it is also possible for an operator or the like to further select and display a specific session from among these.

尚、上記特定領域(特定時間帯)の選択・指定方法は、上記矩形による方法に限らず、既知の様々な方法であってよい。例えば、マウスのホイール操作との連動、数値指定等であってよい。また、尚、OS/ミドルウェアのリソース状況は、アプリケーションプログラムが実行されるWebサーバに限らず、当該Webサーバと接続し、同一システム上にあるサーバ(データベースサーバ等)のものであっても構わない。   The method for selecting and specifying the specific area (specific time zone) is not limited to the rectangular method, and may be various known methods. For example, it may be linked with mouse wheel operation, numerical value designation, or the like. In addition, the resource status of the OS / middleware is not limited to the Web server on which the application program is executed, but may be that of a server (such as a database server) connected to the Web server and on the same system. .

また、上記アプリケーションプログラムの性能データ収集・解析結果(上記表示用の内部データ60等)に基づいて、更に、平均・最速・最遅処理時間、メソッド呼び出し回数等を計算することも可能であり、計算結果は例えば市販の表計算ソフトを用いて表形式で出力することもできる。   Further, based on the performance data collection / analysis result of the application program (the internal data 60 for display, etc.), it is also possible to calculate the average / fastest / latest processing time, the number of method calls, etc. The calculation results can be output in a tabular format using, for example, commercially available spreadsheet software.

図21に、上記Web/Apサーバ10等のコンピュータのハードウェア構成図を示す。尚、当該コンピュータは、Web/Apサーバ10に限らず、上記性能データ収集・表示システムを構成する他の情報処理装置であってもよい。   FIG. 21 is a hardware configuration diagram of a computer such as the Web / Ap server 10. The computer is not limited to the Web / Ap server 10 and may be another information processing apparatus constituting the performance data collection / display system.

図21に示すコンピュータ70は、CPU71、メモリ72、入力部73、出力部74、記憶部75、記録媒体駆動部76、及びネットワーク接続部77を有し、これらがバス78に接続された構成となっている。   21 includes a CPU 71, a memory 72, an input unit 73, an output unit 74, a storage unit 75, a recording medium drive unit 76, and a network connection unit 77, which are connected to a bus 78. It has become.

CPU71は、当該コンピュータ70全体を制御する中央処理装置である。また、CPU71には、例えば、上記主記憶装置30が内臓されていてもよい。
メモリ72は、プログラム実行、データ更新等の際に、記憶部75(あるいは可搬型記録媒体79)に記憶されているプログラムあるいはデータを一時的に格納するRAM等のメモリである。CPU71は、メモリ72に読み出したプログラム/データを用いて、各種処理を実行する。
The CPU 71 is a central processing unit that controls the entire computer 70. Further, for example, the main storage device 30 may be incorporated in the CPU 71.
The memory 72 is a memory such as a RAM that temporarily stores a program or data stored in the storage unit 75 (or the portable recording medium 79) during program execution, data update, or the like. The CPU 71 executes various processes using the program / data read out to the memory 72.

出力部74は、例えばディスプレイ等であり、上記図19、図20等に示す内部データ等の表示画面等が表示される。
入力部73は、例えば、キーボード、マウス等であり、ユーザはこれらを操作して、上記図19、図20等に示す画面上で所望の入力操作(上記矩形領域の指定等)を行う。
The output unit 74 is, for example, a display, and displays a display screen of internal data and the like shown in FIGS.
The input unit 73 is, for example, a keyboard, a mouse, and the like, and the user operates these to perform a desired input operation (designation of the rectangular area, etc.) on the screen shown in FIGS.

ネットワーク接続部77は、例えば不図示のネットワークに接続して、他の情報処理装置(クライアント100等)との通信(コマンド/データ送受信等)を行う為の構成である。   The network connection unit 77 is configured to connect to a network (not shown) and perform communication (command / data transmission / reception, etc.) with another information processing apparatus (client 100 or the like), for example.

記憶部75は、例えばハードディスク等であり、例えば第1、第2の性能データ収集プログラム16,17や、アプリケーションプログラム(JSP/Servlet11、Javaクラス12等)が格納されている。その他、OS15やJavaVM14を実現するプログラム等、本例のWeb/Apサーバ10の各種機能・処理(特に図6、図7、図10、図12に示す処理)を実現させる為に必要となる各種プログラムが格納されている。   The storage unit 75 is, for example, a hard disk or the like, and stores, for example, first and second performance data collection programs 16 and 17 and application programs (JSP / Servlet11, Java class 12, etc.). In addition, various functions and processes (especially the processes shown in FIGS. 6, 7, 10, and 12) of the Web / Ap server 10 of the present example, such as programs for realizing the OS 15 and the Java VM 14. The program is stored.

CPU71は、上記記憶部75に格納されている各種プログラムを読み出し・実行することにより、上述した性能データ収集・表示システムとしての各種機能・処理を実現する。   The CPU 71 implements various functions and processes as the performance data collection / display system described above by reading and executing various programs stored in the storage unit 75.

また、記憶部75は、上記補助記憶装置40に相当するものであってもよく、この場合にはログファイル41も記憶されることになる。また、記憶部75には表示用の内部データ60も記憶されてもよい。すなわち、記憶部75には、図8、図11、図13、図14図15、図16等に示すデータ等が格納されるものであってもよい。   The storage unit 75 may correspond to the auxiliary storage device 40. In this case, the log file 41 is also stored. The storage unit 75 may also store internal data 60 for display. That is, the storage unit 75 may store data shown in FIGS. 8, 11, 13, 14, 15, 16, and the like.

あるいは、上記記憶部75に格納される各種プログラム/データは、可搬型記録媒体79に記憶されているものであってもよい。この場合、可搬型記録媒体79に記憶されているプログラム/データは、記録媒体駆動部76によって読み出される。可搬型記録媒体79とは、例えば、FD(フレキシブル・ディスク)79a、CD−ROM79b、その他、DVD、光磁気ディスク等である。   Alternatively, the various programs / data stored in the storage unit 75 may be stored in the portable recording medium 79. In this case, the program / data stored in the portable recording medium 79 is read by the recording medium driving unit 76. The portable recording medium 79 is, for example, an FD (flexible disk) 79a, a CD-ROM 79b, a DVD, a magneto-optical disk, or the like.

あるいは、また、上記プログラム/データは、ネットワーク接続部77により接続しているネットワークを介して、他の装置内に記憶されているものをダウンロードするものであってもよい。あるいは、更に、インターネットを介して、外部の他の装置内に記憶されているものをダウンロードするものであってもよい。   Alternatively, the program / data may be downloaded from another device via a network connected by the network connection unit 77. Or you may download further what was memorize | stored in the other external apparatus via the internet.

また、本発明は、上記本発明の各種処理をコンピュータ上で実現するプログラムを記録した可搬型記憶媒体として構成できるだけでなく、当該プログラム自体として構成することもできる。   In addition, the present invention can be configured not only as a portable storage medium recording a program for realizing the various processes of the present invention on a computer, but also as the program itself.

以上説明したように、本手法では、アプリケーションプログラムのセッション・リクエスト毎の関数レベルでの処理時間や処理実行日時を自動的に集計して、この集計結果をOS/ミドルウェアのリソース状況と同一グラフ上で重ね合わせて表示することが可能であり、アプリケーションプログラムのセッション・リクエスト毎の処理時間や更に関数毎の処理時間と、OS/ミドルウェアのリソース状況との関連を把握することが可能となる。
これより、上記の通り、OS/ミドルウェアの処理性能悪化に影響を及ぼしている関数を特定できるだけでなく、この関数実行に係るセッション・リクエストが把握でき、クライアントやリクエスト固有の問題があった場合に特定が容易となる。すなわち、効率的且つ的確な性能ボトルネック分析が可能となる。
As described above, in this method, the processing time and processing execution date and time at the function level for each session request of the application program are automatically totaled, and the totaled result is displayed on the same graph as the OS / middleware resource status. The processing time for each session request of the application program, the processing time for each function, and the OS / middleware resource status can be grasped.
As a result, as described above, not only can the function affecting the processing performance deterioration of the OS / middleware be identified, but also the session request related to this function execution can be grasped, and there is a problem specific to the client or request. Identification becomes easy. That is, an efficient and accurate performance bottleneck analysis can be performed.

また、アプリケーションプログラムのセッション・リクエスト毎の、更に各関数レベルでの、性能データ収集の為の処理は、上記の通りアスペクト・コンパイルによって容易に追加可能であり、ユーザ等の手間が掛からないものとなる。   In addition, the processing for collecting performance data at each function level for each session request of the application program can be easily added by aspect compilation as described above, so that it does not take time and effort for the user. Become.

尚、本手法は、例えば以下のシステム・状況において特に有用に適用可能である。
(ア)新規開発する業務システム利用者の要求性能達成度の確認及び性能改善の為に実施する性能テストにおける、性能データ収集後のデータ集計および表示。
Note that this technique is particularly useful in the following systems and situations.
(A) Data collection and display after collecting performance data in performance tests to confirm the required performance achievement level and improve performance of newly developed business system users.

(イ)機能追加、利用者増などにより、運用開始後、アプリケーションプログラムの性能確認・改善を実施する場合の、性能データ収集後のデータ集計および表示。
(ウ)その他、アプリケーションプログラムの性能データ集計および表示が必要なシステム全般。
(A) Data collection and display after performance data collection when application program performance confirmation / improvement is performed after the start of operation due to addition of functions or increase in users.
(C) Other general systems that require application program performance data aggregation and display.

本例のクライアントとサーバからなるシステムのシステム構成図である。1 is a system configuration diagram of a system including a client and a server in this example. 第2の性能データ収集プログラム等の生成処理を説明する為の図である。It is a figure for demonstrating production | generation processes, such as a 2nd performance data collection program. 図2と図1を対応付けて示す図である。It is a figure which matches and shows FIG. 2 and FIG. (a)、(b)はアスペクト・コンパイル結果のアプリケーション(Javaクラス)の一例である。(A), (b) is an example of an application (Java class) of an aspect compilation result. 本例のシステム全体の動作を示す図である。It is a figure which shows operation | movement of the whole system of this example. 第1の性能データ収集プログラムの処理フローチャート図である。It is a process flowchart figure of a 1st performance data collection program. 第2の性能データ収集プログラムの処理フローチャート図である。It is a process flowchart figure of a 2nd performance data collection program. ログファイルの格納データ形式の一例を示す図である。It is a figure which shows an example of the storage data format of a log file. 本実施例のWeb/Apサーバの動作を概略的に示す図である。It is a figure which shows roughly operation | movement of the Web / Ap server of a present Example. 図9に対応する概略的なフローチャート図である。FIG. 10 is a schematic flowchart corresponding to FIG. 9. ログファイルに書き込まれたログデータの一例を示す図である。It is a figure which shows an example of the log data written in the log file. 図13の例に応じた変換処理の一例を示すフローチャート図である。It is a flowchart figure which shows an example of the conversion process according to the example of FIG. 内部データ構造の一例を図(その1)である。FIG. 3 is a diagram (part 1) illustrating an example of an internal data structure. 内部データ構造の一例を図(その2)である。FIG. 10 is a diagram (part 2) illustrating an example of an internal data structure. 図14に示すデータ構造における内部データの具体例である。It is a specific example of internal data in the data structure shown in FIG. 図15に示す内部データの元となった性能データの一例を示す図である。It is a figure which shows an example of the performance data used as the origin of the internal data shown in FIG. 図15に示す例に応じたリクエスト時の動作を示す図である。It is a figure which shows the operation | movement at the time of the request according to the example shown in FIG. (a)はURL/各関数の経過時間、(b)はその実行時間を示す図である。(A) is a URL / elapsed time of each function, and (b) is a diagram showing its execution time. (a)は内部データ等に基づく表示画面例(その1)、(b)は(a)に示す画面の一部分の拡大画面例である。(A) is an example of a display screen based on internal data (part 1), and (b) is an enlarged screen example of a part of the screen shown in (a). (a)は内部データ等に基づく表示画面例(その2)、(b)は(a)に示す画面の一部分の拡大画面例である。(A) is a display screen example (part 2) based on internal data and the like (b) is an enlarged screen example of a part of the screen shown in (a). コンピュータ・ハードウェア構成図である。It is a computer hardware block diagram. 従来のシステム構成及び性能データ収集方式を示す図である。It is a figure which shows the conventional system configuration | structure and a performance data collection system. (a)、(b)は従来の性能データ等の表示例である。(A), (b) is a display example of conventional performance data or the like.

符号の説明Explanation of symbols

10 Web/Apサーバ
11 JSP/Servlet
12 Javaクラス
13 Servletコンテナ
14 JavaVM(Java仮想マシン)
15 OS
16 第1の性能データ収集プログラム
17 第2の性能データ収集プログラム
20 アスペクトコンパイラ
21 アスペクトソースファイル
22 アプリケーションプログラム
23 アスペクトプログラム(.classファイル)
24 アプリケーションプログラム(.classファイル)
30 主記憶装置
31 スレッド固有の変数領域
40 補助記憶装置
41 ログファイル
50 ログファイルのテーブル(性能データ)
51 年月日時分秒.ミリ秒
52 ログレベル
53 セッションID
54 リクエストID
55 スレッド名
56 開始/終了
57 URL
58 実行メソッド情報
60 表示用の内部データ
61 階層
62 URL
63 関数名
64 開始日時
65 終了日時
66 経過時間
67 実行時間
68 セッションID
69 リクエストID
70 コンピュータ
71 CPU
72 メモリ
73 入力部
74 出力部
75 記憶部
76 記録媒体駆動部
77 ネットワーク接続部
78 バス
79 可搬型記録媒体
79a FD(フレキシブル・ディスク)
79b CD−ROM
100 クライアント
101 クライアントプログラム(ブラウザ等)
102 OS
10 Web / Ap Server 11 JSP / Servlet
12 Java class 13 Servlet container 14 JavaVM (Java virtual machine)
15 OS
16 First performance data collection program 17 Second performance data collection program 20 Aspect compiler 21 Aspect source file 22 Application program 23 Aspect program (.class file)
24 Application program (.class file)
30 Main storage device 31 Thread-specific variable area 40 Auxiliary storage device 41 Log file 50 Log file table (performance data)
51 year, month, day, hour, minute, second. Millisecond 52 Log level 53 Session ID
54 Request ID
55 Thread name 56 Start / End 57 URL
58 Execution method information 60 Internal data for display 61 Hierarchy 62 URL
63 Function name 64 Start date and time 65 End date and time 66 Elapsed time 67 Execution time 68 Session ID
69 Request ID
70 Computer 71 CPU
72 Memory 73 Input unit 74 Output unit 75 Storage unit 76 Recording medium drive unit 77 Network connection unit 78 Bus 79 Portable recording medium 79a FD (flexible disk)
79b CD-ROM
100 Client 101 Client program (browser, etc.)
102 OS

Claims (6)

任意のクライアントから任意のリクエストを受け付ける毎に、このリクエストに応じたセッションID、リクエストIDを所定の記憶領域に記憶すると共に、該セッションIDとリクエストIDとに対応付けて所定のログ情報を記録する第1の性能データ収集手段と、
前記リクエストに応じて所定の1以上の関数の処理を実行するアプリケーション実行手段と、
前記アプリケーション実行手段による前記各関数の処理実行時に、前記所定の記憶領域から前記セッションID、リクエストIDを取得して、該セッションIDとリクエストIDとに対応付けて前記各関数の処理実行に係る所定の性能データを前記ログ情報に追加記録する第2の性能データ収集手段と、
OS/ミドルウェアのリソース状況を示すデータを収集するリソース状況データ収集手段と、
前記記録されたログ情報に基づいて、任意の前記各リクエストに応じた処理全体の開始日時、終了日時、処理時間を求め、又は前記各関数毎にその関数の処理の開始日時、終了日時、該関数の処理実行に掛かった時間である実行時間を求めて、該求めた情報を前記セッションID及びリクエストIDに対応付けて成る内部データを生成・記憶する内部データ生成・記憶手段と、
前記内部データに基づいて、任意の前記各リクエスト毎の処理全体の処理時間及び該処理全体中の各関数の前記実行時間をバーまたはグラフで示す可視化表示と、前記リソース状況データに基づく可視化表示とを同一時間軸上に重ねて表示する表示手段と、
を有することを特徴とする性能データ収集・表示システム。
Each time an arbitrary request is received from an arbitrary client, the session ID and request ID corresponding to the request are stored in a predetermined storage area, and predetermined log information is recorded in association with the session ID and the request ID. First performance data collection means;
Application execution means for executing processing of one or more predetermined functions in response to the request;
When executing the process of each function by the application execution unit, the session ID and the request ID are acquired from the predetermined storage area, and the predetermined process related to the process execution of each function is associated with the session ID and the request ID. Second performance data collecting means for additionally recording the performance data of the
Resource status data collecting means for collecting data indicating the resource status of the OS / middleware;
Based on the recorded log information, the start date / time, end date / time, and processing time of the entire process corresponding to each arbitrary request are obtained, or the processing start date / time and end date / time of the function for each function, An internal data generating / storing means for obtaining an execution time which is a time taken to execute the processing of the function, and generating / storing internal data in which the obtained information is associated with the session ID and the request ID;
On the basis of the internal data, and visualization display indicating any said execution time of each function in the overall processing time and the processing overall process for each request in a bar or graph, and visualization display based on the resource status data Display means for displaying on the same time axis ,
A performance data collection / display system characterized by comprising:
前記第2の性能データ収集手段と前記アプリケーション実行手段を実現させるプログラムは、所定のログ出力処理と任意の各ログ出力対象/ログ出力箇所とが記述されたアスペクトソースファイルと、前記関数の処理に係るアプリケーションプログラムとをアスペクト・コンパイルすることで生成されることを特徴とする請求項1記載の性能データ収集・表示システム。   The program for realizing the second performance data collection means and the application execution means is an aspect source file in which predetermined log output processing and arbitrary log output targets / log output locations are described, and processing of the function. 2. The performance data collection / display system according to claim 1, wherein the performance data collection / display system is generated by aspect-compiling the application program. 前記各関数の処理実行に係る所定の性能データは、該各関数の関数名、処理開始/終了日時、接続先URLであることを特徴とする請求項1又は2記載の性能データ収集・表示システム。   3. The performance data collection / display system according to claim 1, wherein the predetermined performance data related to the execution of each function is a function name of each function, a process start / end date and time, and a connection destination URL. . 任意のクライアントからの任意のリクエストを受付ける毎に生成されるセッションIDとリクエストIDとに対応付けて、該リクエストに応じた処理全体に係る性能データ、又は該処理全体中の各関数の処理実行に係る性能データが、ログ情報として記憶された性能データ記憶手段と、
少なくとも前記リクエストに応じた処理の実行時のOS/ミドルウェアのリソース状況を示す各種データが記憶されたリソース状況データ記憶手段と、
前記記録されたログ情報に基づいて、任意の前記各リクエストに応じた処理全体の開始日時、終了日時、処理時間を求め、又は前記各関数毎にその関数の処理の開始日時、終了日時、該関数の処理実行に掛かった時間である実行時間を求めて、該求めた情報を前記セッションID及びリクエストIDに対応付けて成る内部データを生成・記憶する内部データ生成・記憶手段と、
前記内部データに基づいて、任意の前記各リクエスト毎の処理全体の処理時間及び該処理全体中の各関数の前記実行時間をバーまたはグラフで示す可視化表示と、前記リソース状況データに基づく可視化表示とを同一時間軸上に重ねて表示する表示手段と、
を有することを特徴とする性能データ表示装置。
In association with a session ID and a request ID generated every time an arbitrary request from an arbitrary client is received, performance data related to the entire process corresponding to the request, or processing execution of each function in the entire process Performance data storage means in which such performance data is stored as log information;
Resource status data storage means for storing at least various data indicating the resource status of the OS / middleware at the time of execution of processing according to the request;
Based on the recorded log information, the start date / time, end date / time, and processing time of the entire process corresponding to each arbitrary request are obtained, or the processing start date / time and end date / time of the function for each function, An internal data generating / storing means for obtaining an execution time which is a time taken to execute the processing of the function, and generating / storing internal data in which the obtained information is associated with the session ID and the request ID;
On the basis of the internal data, and visualization display indicating any said execution time of each function in the overall processing time and the processing overall process for each request in a bar or graph, and visualization display based on the resource status data Display means for displaying on the same time axis ,
A performance data display device comprising:
コンピュータを、
任意のクライアントから任意のリクエストを受け付ける毎に、このリクエストに応じたセッションID、リクエストIDを所定の記憶領域に記憶すると共に、該セッションIDとリクエストIDとに対応付けて所定のログ情報を記録する第1の性能データ収集手段と、
前記リクエストに応じて所定の1以上の関数の処理を実行するアプリケーション実行手段と、
前記アプリケーション実行手段による前記各関数の処理実行時に、前記所定の記憶領域から前記セッションID、リクエストIDを取得して、該セッションIDとリクエストIDとに対応付けて前記各関数の処理実行に係る所定の性能データを前記ログ情報に追加記録する第2の性能データ収集手段と、
OS/ミドルウェアのリソース状況を示すデータを収集するリソース状況データ収集手段と、
前記記録されたログ情報に基づいて、任意の前記各リクエストに応じた処理全体の開始日時、終了日時、処理時間を求め、又は前記各関数毎にその関数の処理の開始日時、終了日時、該関数の処理実行に掛かった時間である実行時間を求めて、該求めた情報を前記セッションID及びリクエストIDに対応付けて成る内部データを生成・記憶する内部データ生成・記憶手段と、
前記内部データに基づいて、任意の前記各リクエスト毎の処理全体の処理時間及び該処理全体中の各関数の前記実行時間をバーまたはグラフで示す可視化表示と、前記リソース状況データに基づく可視化表示とを同一時間軸上に重ねて表示する表示手段と、
として機能させる為のプログラム。
Computer
Each time an arbitrary request is received from an arbitrary client, the session ID and request ID corresponding to the request are stored in a predetermined storage area, and predetermined log information is recorded in association with the session ID and the request ID. First performance data collection means;
Application execution means for executing processing of one or more predetermined functions in response to the request;
When executing the process of each function by the application execution unit, the session ID and the request ID are acquired from the predetermined storage area, and the predetermined process related to the process execution of each function is associated with the session ID and the request ID. Second performance data collecting means for additionally recording the performance data of the
Resource status data collecting means for collecting data indicating the resource status of the OS / middleware;
Based on the recorded log information, the start date / time, end date / time, and processing time of the entire process corresponding to each arbitrary request are obtained, or the processing start date / time and end date / time of the function for each function, An internal data generating / storing means for obtaining an execution time which is a time taken to execute the processing of the function, and generating / storing internal data in which the obtained information is associated with the session ID and the request ID;
On the basis of the internal data, and visualization display indicating any said execution time of each function in the overall processing time and the processing overall process for each request in a bar or graph, and visualization display based on the resource status data Display means for displaying on the same time axis ,
Program to function as.
コンピュータを、
任意のクライアントからの任意のリクエストを受付ける毎に生成されるセッションIDとリクエストIDとに対応付けて、該リクエストに応じた処理全体に係る性能データ、又は該処理全体中の各関数の処理実行に係る性能データが、ログ情報として記憶された性能データ記憶手段と、
少なくとも前記リクエストに応じた処理の実行時のOS/ミドルウェアのリソース状況を示す各種データが記憶されたリソース状況データ記憶手段と、
前記記録されたログ情報に基づいて、任意の前記各リクエストに応じた処理全体の開始日時、終了日時、処理時間を求め、又は前記各関数毎にその関数の処理の開始日時、終了日時、該関数の処理実行に掛かった時間である実行時間を求めて、該求めた情報を前記セッションID及びリクエストIDに対応付けて成る内部データを生成・記憶する内部データ生成・記憶手段と、
前記内部データに基づいて、任意の前記各リクエスト毎の処理全体の処理時間及び該処理全体中の各関数の前記実行時間をバーまたはグラフで示す可視化表示と、前記リソース状況データに基づく可視化表示とを同一時間軸上に重ねて表示する表示手段と、
として機能させる為のプログラム。
Computer
In association with a session ID and a request ID generated every time an arbitrary request from an arbitrary client is received, performance data related to the entire process corresponding to the request, or processing execution of each function in the entire process Performance data storage means in which such performance data is stored as log information;
Resource status data storage means for storing at least various data indicating the resource status of the OS / middleware at the time of execution of processing according to the request;
Based on the recorded log information, the start date / time, end date / time, and processing time of the entire process corresponding to each arbitrary request are obtained, or the processing start date / time and end date / time of the function for each function, An internal data generating / storing means for obtaining an execution time which is a time taken to execute the processing of the function, and generating / storing internal data in which the obtained information is associated with the session ID and the request ID;
On the basis of the internal data, and visualization display indicating any said execution time of each function in the overall processing time and the processing overall process for each request in a bar or graph, and visualization display based on the resource status data Display means for displaying on the same time axis ,
Program to function as.
JP2007229709A 2007-09-05 2007-09-05 Performance data collection / display system, performance data display device, and program thereof Active JP4867864B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007229709A JP4867864B2 (en) 2007-09-05 2007-09-05 Performance data collection / display system, performance data display device, and program thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007229709A JP4867864B2 (en) 2007-09-05 2007-09-05 Performance data collection / display system, performance data display device, and program thereof

Publications (2)

Publication Number Publication Date
JP2009064124A JP2009064124A (en) 2009-03-26
JP4867864B2 true JP4867864B2 (en) 2012-02-01

Family

ID=40558676

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007229709A Active JP4867864B2 (en) 2007-09-05 2007-09-05 Performance data collection / display system, performance data display device, and program thereof

Country Status (1)

Country Link
JP (1) JP4867864B2 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012043096A (en) * 2010-08-17 2012-03-01 Fujifilm Corp Device, method and program of image processing
CN103684898B (en) * 2012-09-14 2017-06-23 阿里巴巴集团控股有限公司 It is a kind of to monitor the method and device that user's request is run in a distributed system
CN104426945B (en) * 2013-08-27 2019-08-13 腾讯科技(深圳)有限公司 A kind of method, apparatus and system obtaining application performance data
JP6481355B2 (en) * 2014-12-18 2019-03-13 日本電気株式会社 Process management apparatus, method and program
JP6778713B2 (en) * 2018-05-29 2020-11-04 日本電信電話株式会社 Functional analysis device, functional analysis method and functional analysis program

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001306364A (en) * 2000-04-18 2001-11-02 Ntt Comware Corp Transaction processing system and its recording medium
JP2003141076A (en) * 2001-10-30 2003-05-16 Oki Electric Ind Co Ltd Web application processing performance measurement method and web application server
JP4087410B2 (en) * 2003-11-17 2008-05-21 健二 勝井 Measuring method in online procedure

Also Published As

Publication number Publication date
JP2009064124A (en) 2009-03-26

Similar Documents

Publication Publication Date Title
CN110928772B (en) Test method and device
US9047399B2 (en) Generating visualization from running executable code
CN108762743B (en) Data table operation code generation method and device
JP4516001B2 (en) Software test management program, software test management apparatus, and software test management method
WO2012014284A1 (en) Method of generating test scenario, test scenario generating system and test scenario generating program
JP2012190219A (en) Information processing device and trace log acquisition method
JP2015043198A (en) Analysis system, analysis method and analysis program
JP2005196291A (en) User interface application development program and development device
JP4867864B2 (en) Performance data collection / display system, performance data display device, and program thereof
US20080177525A1 (en) Integrated debugger simulator
JP2007316905A (en) Computer system and method for monitoring application program
JP5900193B2 (en) Update determination program and update determination apparatus
US8412744B2 (en) Visualization of runtime analysis across dynamic boundaries
CN116009852A (en) Code construction method, device, computer equipment and storage medium
Jiang et al. Log-it: Supporting Programming with Interactive, Contextual, Structured, and Visual Logs
JP3942098B2 (en) Information processing system, information registration information processing apparatus, information search information processing apparatus, information registration information processing method, information search information processing method, program, and recording medium
JP2012099104A (en) Technique for efficient partial crawling of interactive client-server applications in parallel distributed environment
JP6717140B2 (en) Analysis program, analysis method, and analysis device
JP7260150B2 (en) WEBSITE DESIGN SUPPORT DEVICE, WEBSITE DESIGN SUPPORT METHOD, AND PROGRAM
JP2013105286A (en) Automatic program generation device and automatic program generation method
JP2013037580A (en) Information processor
JP2006127117A (en) Method, device, and program for recording/reproducing web reference operation, and storage medium storing program
von Laszewski et al. Grid Workflow-An Integrated Approach
JP5651873B2 (en) Operation support method and computer
JP2009122985A (en) System and program for sub-process execution

Legal Events

Date Code Title Description
A625 Written request for application examination (by other person)

Free format text: JAPANESE INTERMEDIATE CODE: A625

Effective date: 20100415

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20110422

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110926

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111018

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111031

R150 Certificate of patent or registration of utility model

Ref document number: 4867864

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141125

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250