nimbus (1.2.4) | 2018-01-25 20:02 |
nimbus-sample (1.2.4) | 2018-01-26 17:06 |
アプリケーション開発において、リソースの使用率が必要とされる場合があります。
リソースの使用率を取得する機能を抽象化したのが、ResourceUsageです。
処理時間や数値の記録を行う機能を抽象化したのが、PerformanceRecorderです。
関連するパッケージは、以下です。
インタフェースResourceUsageは、基本的にリソースの使用状況を判断する必要がある他のサービスが利用する下位機能である。
このインタフェースの実装サービスは、下位サービスで、以下の上位サービスから使用します。
上位サービス | 用途 |
jp.ossc.nimbus.service.aop.invoker.MethodReflectionCallInvokerService | 呼び出し元にリソースの使用状況を提供するために使用する |
jp.ossc.nimbus.service.proxy.invoker.LocalClientMethodCallInvokerService | 呼び出し元にリソースの使用状況を提供するために使用する |
jp.ossc.nimbus.service.proxy.RemoteServiceServerService | 呼び出し元にリソースの使用状況を提供するために使用する |
jp.ossc.nimbus.service.proxy.RemoteServiceServerSessionBean | 呼び出し元にリソースの使用状況を提供するために使用する |
jp.ossc.nimbus.service.beancontrol.BeanFlowInvokerServerService | 分散された業務フローサーバに処理を振り分けるのに、呼び出し元にリソースの使用状況を提供するために使用する |
ResourceUsageを使った簡単なアプリケーションのサンプルを示します。
- import jp.ossc.nimbus.core.ServiceManagerFactory;
- import jp.ossc.nimbus.service.performance.ResourceUsage;
- // ResourceUsageを取得
- ResourceUsage ru = (ResourceUsage)ServiceManagerFactory.getServiceObject("Sequence");
- // リソースの使用率を取得する
- Number usage = (Number)ru.getUsage();
- System.out.println(usage.doubleValue());
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.performance.CPUResourceUsageService | CPUの使用率を取得する |
jp.ossc.nimbus.service.performance.HeapMemoryResourceUsageService | ヒープメモリの使用率を取得する |
インタフェースPerformanceRecorderは、基本的に処理時間や数値の記録をする必要がある他のサービスが利用する下位機能である。
このインタフェースの実装サービスは、下位サービスで、以下の上位サービスから使用します。
上位サービス | 用途 |
jp.ossc.nimbus.service.aop.interceptor.BeanFlowJournalMetricsInterceptorService | ジャーナルの出力量を記録するために使用する |
jp.ossc.nimbus.service.aop.interceptor.BeanFlowMetricsInterceptorService | 業務フローの処理時間を記録するために使用する |
jp.ossc.nimbus.service.aop.interceptor.MethodMetricsInterceptorService | メソッドの処理時間を記録するために使用する |
jp.ossc.nimbus.service.aop.interceptor.PerformanceRecordInterceptorService | メソッドの処理時間を記録するために使用する |
jp.ossc.nimbus.service.aop.interceptor.servlet.HttpServletRequestMetricsInterceptorService | リクエストの処理時間を記録するために使用する |
jp.ossc.nimbus.service.aop.interceptor.servlet.HttpServletResponseDeflateInterceptorService | 圧縮サイズや圧縮時間等を記録するために使用する |
jp.ossc.nimbus.service.beancontrol.DefaultBeanFlowInvokerFactoryService | ジャーナルの出力量を記録するために使用する |
jp.ossc.nimbus.service.publish.MessageReceiverService | メッセージの到達のレイテンシーを記録するために使用する |
jp.ossc.nimbus.service.http.httpclient.HttpClientFactoryService | HTTPの通信時間を記録するために使用する |
JDBCコネクションラッパー | SQLの処理時間を記録するために使用する |
PerformanceRecorderを使った簡単なアプリケーションのサンプルを示します。
- import jp.ossc.nimbus.core.ServiceManagerFactory;
- import jp.ossc.nimbus.service.performance.PerformanceRecorder;
- // PerformanceRecorderを取得
- PerformanceRecorder pr = (PerformanceRecorder)ServiceManagerFactory.getServiceObject("PerformanceRecorder");
- long startTime = System.currentTimeMillis();
- try{
- // 処理
- }finally{
- // 処理時間を記録する
- pr.record(startTime, System.currentTimeMillis());
- }
- long value = ...;
- // 何らかの処理量を記録する
- pr.recordValue(System.currentTimeMillis(), value);
実装サービスの一覧は以下のとおりです。
実装サービス | 実装概要 |
jp.ossc.nimbus.service.performance.DefaultPerformanceRecorderService | 処理時間や処理量を定期的にサンプリングして出力する |