39.3.7 ログの見積もり
各ログファイルの見積もり方法について説明します。
(1) 使用するモデルおよびログの設定
ログの見積もり方法は,次に示すモデル1およびモデル2を例に説明します。
- モデル1:正常系
-
WebサービスクライアントまたはWebリソースクライアントからリクエストを送信し,WebサービスまたはWebリソースが正常にレスポンスを返す場合のモデルです。
- モデル2:異常系
-
WebサービスまたはWebリソースでRuntimeExceptionが発生する場合のモデルです。WebリソースにはRuntimeExceptionを処理できる例外マッピングプロバイダが存在しないものとします。
WebサービスクライアントまたはWebリソースクライアントでは,オブジェクトの再利用を前提にしています。オブジェクトの再利用については,「3.6.4 注意事項」または「11.4.5 注意事項」を参照してください。
JAX-WS機能の場合,WebサービスクライアントやWebサービスを実装する形態によってさまざまです。必要に応じてモデルを追加してください。主な観点を次に示します。
-
Webサービス実装クラスやプロバイダ実装クラスおよびスタブベースのWebサービスクライアントやディスパッチベースのWebサービスクライアントのバリエーション。
-
SOAP 1.1仕様およびSOAP 1.2仕様のSOAPメッセージのバリエーション。
-
wsi:swaRef形式およびMTOM/XOP仕様形式の添付ファイルのSOAPメッセージのバリエーション。
JAX-RS機能の場合,JAX-RS仕様の性質上HTTPリクエストやHTTPレスポンスを送受信する方法は,WebリソースクライアントやWebリソースを実装する形態によってさまざまです。必要に応じてモデルを追加してください。主な観点を次に示します。
-
リソースメソッドのエンティティパラメタ,その他のパラメタ,および戻り値の型や要求メソッド識別子のバリエーション。
-
例外マッピングプロバイダの有無および例外マッピングプロバイダが処理できる例外のバリエーション。
-
Pathアノテーションの使用方法によるバリエーション。
このモデルで使用するログの設定を示します。
-
稼働ログ,例外ログ,および保守ログの設定は,デフォルト値のまま変更しません。
-
通信ログの設定は,次のプロパティにそれぞれ「ALL」を指定します。
JAX-WS機能の場合
-
com.cosminexus.jaxws.logger.runtime.transport.client_dump
-
com.cosminexus.jaxws.logger.runtime.transport.server_dump
JAX-RS機能の場合
-
com.cosminexus.jaxrs.logger.runtime.transport.client.level
-
com.cosminexus.jaxrs.logger.runtime.transport.server.level
-
ログの設定値およびデフォルト値については,「10.1.2 共通定義ファイルの設定項目」または「13.1.2 共通定義ファイルの設定項目」を参照してください。
(2) JAX-WS機能のログの見積もり方法
モデル1およびモデル2の各ログの出力結果を次の表に示します。
次の表にある「起動時」とはアプリケーション開始時,「終了時」とはアプリケーション停止時,「1リクエスト処理時」とはWebサービスによる1リクエストの処理を表します。出力量はこれらの期間に出力されるログの量を示します。
項番 |
ログの種類 |
出力量 |
||
---|---|---|---|---|
起動時 |
1リクエスト処理時 |
終了時 |
||
1 |
稼働ログ |
0.7KB |
|
0.3KB |
2 |
例外ログ |
0KB |
|
0KB |
3 |
通信ログ |
0KB |
0.3KB+HTTPリクエスト+HTTPレスポンス量 |
0KB |
4 |
保守ログ |
2.4KB |
|
0.4KB |
各ログの見積もり式を次に示します。この結果を基に,各ログファイル一つのファイルサイズ,およびファイル面数を求めます。
[単位時間当たりのログの出力量] = [初期化時の出力量] +[モデル1の1リクエスト処理時の出力量]×総リクエスト数×モデル1のリクエストの割合 +[モデル2の1リクエスト処理時の出力量]×総リクエスト数×モデル2のリクエストの割合 : +[モデルnの1リクエスト処理時の出力量]×総リクエスト数×モデルnのリクエストの割合 +[終了時の出力量]
この式を基に,例を使用して各ファイルの見積もり方法を説明します。
想定する例として,1分間に平均100件のリクエストがあるようなシステムで,ログを3時間ラップアラウンドされないようにログファイルのサイズと個数を見積もるものとします。全リクエスト中,モデル1のリクエストが80%,モデル2のリクエストが20%を占めるとすると,3時間では計18,000リクエスト(100リクエスト/分×180分)が到着します。
この場合,稼働ログの出力量を計算すると,次のとおりになります。
0.7KB(初期化時の出力量) +{0KB×18000}(モデル1の全リクエスト処理時の出力量)×0.8(モデル1のリクエストの割合) +{0.3KB×18000}(モデル2の全リクエスト処理時の出力量)×0.2(モデル2のリクエストの割合) +0.3KB(終了時の出力量) =1081KB
計算の結果,ファイルサイズとファイル面数はデフォルト値で間に合います。
同様に,保守ログの出力量を計算すると,次のとおりになります。
2.4KB(初期化時の出力量) +{3.2KB×18000}(モデル1の全リクエスト処理時の出力量)×0.8(モデル1のリクエストの割合) +{3.6KB×18000}(モデル2の全リクエスト処理時の出力量)×0.2(モデル2のリクエストの割合) +0.4KB(終了時の出力量) =59043KB≒57.6MB
計算の結果,ログファイル一つ当たり15MBとすると,面数は四つとなります。
- 注意事項
-
通信ログでは,HTTPリクエストやHTTPレスポンスの内容によって,出力量が変化します。添付ファイルを使用して通信する場合は,通信ログにも添付ファイルの内容が記録されるため,特に大きな添付ファイルを使用しているときは,通信ログファイルのサイズや面数を考慮する必要があります。
(3) JAX-RS機能のログの見積もり方法
モデル1およびモデル2の各ログの出力結果を次の表に示します。
次の表にある「起動時」とはアプリケーション開始時,「終了時」とはアプリケーション停止時,「1リクエスト処理時」とはWebリソースによる1リクエストの処理を表します。出力量はこれらの期間に出力されるログの量を示します。
項番 |
ログの種類 |
出力量 |
||
---|---|---|---|---|
起動時 |
1リクエスト処理時 |
終了時 |
||
1 |
稼働ログ |
1KB |
|
0KB |
2 |
例外ログ |
0KB |
|
0KB |
3 |
通信ログ |
0KB |
0.3KB+HTTPリクエスト+HTTPレスポンス量 |
0KB |
4 |
保守ログ |
23KB |
|
0KB |
各ログの見積もり式を次に示します。この結果を基に,各ログファイル一つのファイルサイズ,およびファイル面数を求めます。
[単位時間当たりのログの出力量] = [起動時の出力量] +[モデル1の1リクエスト処理時の出力量]×総リクエスト数×モデル1のリクエストの割合 +[モデル2の1リクエスト処理時の出力量]×総リクエスト数×モデル2のリクエストの割合 : +[モデルnの1リクエスト処理時の出力量]×総リクエスト数×モデルnのリクエストの割合 +[終了時の出力量]
この式を基に,例を使用して各ファイルの見積もり方法を説明します。
想定する例として,1分間に平均100件のリクエストがあるようなシステムで,ログを3時間ラップアラウンドされないようにログファイルのサイズと個数を見積もるものとします。全リクエスト中,モデル1のリクエストが80%,モデル2のリクエストが20%を占めるとすると,3時間では計18,000リクエスト(100リクエスト/分×180分)が到着します。
この場合,稼働ログの出力量を計算すると,次のとおりになります。
1KB(初期化時の出力量) +{0KB×18000}(モデル1の1リクエスト処理時の出力量)×0.8(モデル1のリクエストの割合) +{0.3KB×18000}(モデル2の全リクエスト処理時の出力量)×0.2(モデル2のリクエストの割合) +0KB(終了時の出力量) =1081KB
計算の結果,ファイルサイズとファイル面数はデフォルト値で間に合います。
同様に,保守ログの出力量を計算すると,次のとおりになります。
23KB(初期化時の出力量) +{0KB×18000}(モデル1の1リクエスト処理時の出力量)×0.8(モデル1のリクエストの割合) +{0.3KB×18000}(モデル2の全リクエスト処理時の出力量)×0.2(モデル2のリクエストの割合) +0KB(終了時の出力量) =1103KB
計算の結果,ファイルサイズとファイル面数はデフォルト値で間に合います。
- 注意事項
-
通信ログでは,HTTPリクエストやHTTPレスポンスの内容によって,出力量が変化します。JSON形式のデータを使用して通信する場合は,通信ログにもJSON形式のデータが記録されるため,特に大きなJSON形式のデータを使用しているときは,通信ログファイルのサイズや面数を考慮する必要があります。