以下、図面に基づいて本発明の実施の形態を説明する。図1は、第一の実施の形態における情報処理システムの構成例を示す図である。図1に示される情報処理システム1において、サービス提供環境E2及びユーザ環境E1は、インターネット等の広域的なネットワークを介して通信可能とされている。
サービス提供環境E2は、ネットワークを介してクラウドサービスを提供する組織におけるシステム環境である。なお、本実施の形態では、クラウドサービスを具体例に採用して説明するが、ASP(Application Service Provider)によって提供されるサービスやWebサービス等、ネットワークを介して提供される他の形態のサービスに関して、本実施の形態が適用されてもよい。
サービス提供環境E2は、サービス提供装置20を有する。サービス提供装置20は、ネットワークを介して所定のサービスを提供する。サービス提供装置20が提供するサービスの一つとして、「クラウドスキャンサービス」を例示する。クラウドスキャンサービスとは、機器10においてスキャンされ、機器10より転送された画像データを、所定のストレージに配信するサービスをいうが、特にその呼称に限定されるものではない。なお、サービス提供装置20は、ユーザ環境E1に設置されてもよい。すなわち、サービス提供環境E2は、ユーザ環境E1に包含されてもよい。
ユーザ環境E1は、機器10のユーザ企業等の組織におけるシステム環境である。ユーザ環境E1において、一台以上の機器10と管理者端末30とはLAN(Local Area Network)等のネットワークを介して接続されている。本実施の形態の機器10は、スキャン、印刷、コピー、及びファクス(FAX)通信等のうちの2以上の機能を1台の筐体で実現する複合機である。但し、上記のうちの1つの機能のみ、或いは他の機能を有する画像形成装置が機器10として利用されてもよい。また、プロジェクタ、電子黒板、又はテレビ会議システム等の画像形成装置以外の機器が、機器10として利用されてもよい。
管理者端末30は、ユーザ環境E1における機器10の管理者が使用する端末である。管理者端末30の一例として、PC(Personal Computer)、PDA(Personal Digital Assistance)、タブレット型端末、スマートフォン、又は携帯電話等が挙げられる。
図2は、第一の実施の形態における機器のハードウェア構成例を示す図である。図2において、機器10は、コントローラ11、スキャナ12、プリンタ13、モデム14、操作パネル15、ネットワークインタフェース16、及びSDカードスロット17等のハードウェアを有する。
コントローラ11は、CPU111、RAM112、ROM113、HDD114、及びNVRAM115等を有する。ROM113には、各種のプログラムやプログラムによって利用されるデータ等が記憶されている。RAM112は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。CPU111は、RAM112にロードされたプログラムを処理することにより、各種の機能を実現する。HDD114には、プログラムやプログラムが利用する各種のデータ等が記憶される。NVRAM115には、各種の設定情報等が記憶される。
スキャナ12は、原稿より画像データを読み取るためのハードウェア(画像読取手段)である。プリンタ13は、印刷データを印刷用紙に印刷するためのハードウェア(印刷手段)である。モデム14は、電話回線に接続するためのハードウェアであり、FAX通信による画像データの送受信を実行するために用いられる。操作パネル15は、ユーザからの入力の受け付けを行うためのボタン等の入力手段や、液晶パネル等の表示手段(表示装置)等を備えたハードウェアである。液晶パネルは、タッチパネル機能を有していてもよい。この場合、当該液晶パネルは、入力手段の機能をも兼ねる。ネットワークインタフェース16は、LAN等のネットワーク(有線又は無線の別は問わない。)に接続するためのハードウェアである。SDカードスロット17は、SDカード80に記憶されたプログラムを読み取るために利用される。すなわち、機器10では、ROM113に記憶されたプログラムだけでなく、SDカード80に記憶されたプログラムもRAM112にロードされ、実行されうる。なお、他の記録媒体(例えば、CD−ROM又はUSB(Universal Serial Bus)メモリ等)によってSDカード80が代替されてもよい。すなわち、SDカード80の位置付けに相当する記録媒体の種類は、所定のものに限定されない。この場合、SDカードスロット17は、記録媒体の種類に応じたハードウェアによって代替されればよい。
図3は、第一の実施の形態におけるサービス提供装置のハードウェア構成例を示す図である。図3のサービス提供装置20は、それぞれバスBで相互に接続されているドライブ装置200と、補助記憶装置202と、メモリ装置203と、CPU204と、インタフェース装置205とを有する。
サービス提供装置20での処理を実現するプログラムは、CD−ROM等の記録媒体201によって提供される。プログラムを記憶した記録媒体201がドライブ装置200にセットされると、プログラムが記録媒体201からドライブ装置200を介して補助記憶装置202にインストールされる。但し、プログラムのインストールは必ずしも記録媒体201より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置202は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置203は、プログラムの起動指示があった場合に、補助記憶装置202からプログラムを読み出して格納する。CPU204は、メモリ装置203に格納されたプログラムに従ってサービス提供装置20に係る機能を実行する。インタフェース装置205は、ネットワークに接続するためのインタフェースとして用いられる。
なお、サービス提供装置20は、図3に示されるようなハードウェアを有する複数のコンピュータによって構成されてもよい。すなわち、後述においてサービス提供装置20が実行する処理は、複数のコンピュータに分散されて実行されてもよい。
図4は、第一の実施の形態における機器の機能構成例を示す図である。図4において、機器10は、SDKアプリ120、SDKプラットフォーム130、コントロールサービス141、ソケットサービス142、ソケットフック部143、及びイベントフック部144等を有する。
SDKアプリ120は、機器10の出荷後において、機器10の機能拡張を図るために追加的にインストールされるアプリケーションプログラム(又はプラグイン、Browserアプリなどともいう。)である。同図では、SDKアプリ120の一例として、スキャンアプリ120a、印刷アプリ120b、及び機器側応答性監視アプリ120c等が示されている。
スキャンアプリ120aは、原稿からの画像データの読み取りと、当該画像データのサービス提供装置20へアップロードとを機器10に実行させるSDKアプリ120である。サービス提供装置20へアップロードされた画像データは、所定の宛先に配信される。
印刷アプリ120bは、サービス提供装置20へ事前にアップロードされている印刷データのダウンロードと、当該印刷データの印刷とを機器10に実行させるSDKアプリ120である。なお、本実施の形態において、印刷データとは、印刷対象のデータを意味する。したがって、印刷データは、必ずしも、PDL(Page Description Language)等の特定の言語によって記述されたデータに限定されない。例えば、文書データ等、PDLデータに変換前のデータが、印刷データであってもよい。
機器側応答性監視アプリ120cは、機器10において起動されている各SDKアプリ120の状態監視や、機器10の負荷状態の計測等を機器10に実行させるSDKアプリ120である。
なお、機器10には、SDKアプリ120以外に、標準的なアプリケーションプログラムが、出荷時に予め実装されていてもよい。
SDKプラットフォーム130は、SDKアプリ120を開発するためのAPI(Application Program Interface)を備え、SDKアプリ120の実行環境を提供する。APIの形態は、例えば、関数であってもよいし、オブジェクト指向プログラミングにおけるクラスのメソッド等であってもよい。以下、SDKプラットフォーム130が提供するAPIを、「SDKAPI」という。例えば、SDKプラットフォーム130は、スキャン機能に関するSDKAPI、印刷機能に関するSDKAPI、コピー機能に関するSDKAPI、通信に関するAPI等をSDKアプリ120に提供する。SDKAPIは公開されており、サードベンダ等によってもSDKアプリ120は開発されうる。なお、SDKプラットフォーム130は、Java(登録商標)VM(Virtual Machine)(以下、単に、「JavaVM」という。)を含んでいてもよい。この場合、SDKアプリ120は、Java(登録商標)言語によって実装される。例えば、SDKアプリ120は、Xletアプリとして実装されてもよい。
図4において、SDKプラットフォーム130は、アプリ管理部131、パネル管理部132、パネルサービス部133、スキャンサービス部134、及び印刷サービス部135等を含む。
アプリ管理部131は、各SDKアプリ120のライフサイクルを管理する。すなわち、SDKアプリ120は、明確に定義されたライフサイクルモデルに従って動作する。ライフサイクルとは、例えば、起動状態、アクティブ状態、一時停止状態、及び終了状態の状態遷移を意味する。起動状態は、SDKアプリ120の起動時において初期化処理が実行される状態である。アクティブ状態は、SDKアプリ120が有する機能が実行される状態である。一時停止状態は、SDKアプリ120が有する機能が一時的に停止される状態である。終了状態は、SDKアプリ120が終了する状態である。
図4には、スキャンアプリ120a及び印刷アプリ120bのそれぞれの内部に、状態遷移図が示されている。それぞれの状態遷移図において、アクティブ状態の内部は、操作画面の遷移を示す。例えば、スキャンアプリ120aの操作画面は、スキャン指定画面、スキャン実行画面、スキャン配信画面の順で遷移することが示されている。スキャン指定画面は、スキャンの設定情報等を受け付けるための画面である。スキャン実行画面は、スキャンの実行中に表示される画面である。スキャン配信画面は、スキャンされた画像データの配信中(アップロード中)に表示される画面である。また、印刷アプリ120bの操作画面は、印刷指定画面、印刷データ取得画面、及び印刷中画面の順で遷移することが示されている。印刷指定画面は、印刷の設定情報等を受け付けるための画面である。印刷データ取得画面は、印刷データのダウンロード中に表示される画面である。印刷中画面は、印刷の実行中に表示される画面である。
パネル管理部132は、アプリ管理部131の指示に従い、操作パネル15の利用権限(以下、「パネル利用権限」という。)を管理する。すなわち、SDKアプリ120間において、操作パネル15の利用(操作パネル15への操作画面の表示)は、排他的である。したがって、基本的に、或る瞬間において、パネル利用権限が与えられるSDKアプリ120は一つであり、斯かるパネル利用権限の授与及び回収等が、パネル管理部132によって行われる。本実施の形態では、アクティブ状態に遷移したSDKアプリ120に、パネル利用権限が授与される。したがって、基本的に、アクティブ状態への遷移は排他的である。また、アクティブ状態でないことは(例えば、一時停止状態であること)、パネル利用権限を有さないこと、すなわち、バックグラウンドで動作中であることを示す。なお、一時停止状態は、必ずしも処理が完全に停止する状態であるとは限らない。パネル利用権限を有さなくても実行可能な機能を有するSDKアプリ120については、一時停止状態において、当該機能に係る処理が実行される場合が有る。例えば、印刷アプリ120bは、印刷指定後において、バックグラウンドで印刷データの取得及び印刷を実行可能である。したがって、印刷アプリ120bは、一時停止状態において、印刷データの取得及び印刷を実行する場合がある。そうすることで、例えば、印刷が完了するまで他のSDKアプリ120(例えば、スキャンアプリ120a)を利用できないといった不都合の発生を回避することができる。したがって、或るSDKアプリ120のアクティブ状態と他のSDKアプリ120の一時停止状態とが並行することで、2以上のSDKアプリ120の処理が並列的に実行される可能性が有る。
パネルサービス部133は、操作パネル15に対する操作画面等の描画に関するSDKAPIを提供する。パネルサービス部133は、パネル管理部132によってパネル利用権限が授与されたSDKアプリ120による当該SDKAPIの呼び出しに応じ、当該SDKアプリ120の操作画面の描画等を行う。
スキャンサービス部134は、スキャンの実行に関するSDKAPIを提供し、SDKアプリ120による当該SDKAPIの呼び出しに応じ、スキャンの実行制御等を行う。当該実行制御に関して、スキャンサービス部134からコントロールサービス141に対してスキャンの実行要求が入力される。スキャンサービス部134は、複数のSDKアプリ120からの要求について、排他制御を行う。
印刷サービス部135は、印刷の実行に関するSDKAPIを提供し、SDKアプリ120による当該SDKAPIの呼び出しに応じ、印刷の実行制御等を行う。当該実行制御に関して、印刷サービス部135からコントロールサービス141に対して印刷の実行要求が入力される。印刷サービス部135は、複数のSDKアプリ120からの要求について、排他制御を行う。
コントロールサービス141は、各種のハードウェアリソース等を制御するための機能(API)を上位ソフトウェア等(ここでは、SDKプラットフォーム130等)に対して提供するソフトウェアモジュール群である。例えば、コントロールサービス141は、スキャナ12の制御機能、プリンタ13の制御機能、メモリ(RAM112、ROM113、及びNVRAM115等)の管理機能等を有する。なお、本実施の形態において、コントロールサービス141は、C又はC++によるAPIを提供する。一方、SDKAPIは、Java(登録商標)言語によるAPIである。SDKAPIは、コントロールサービス141が提供するAPIについて、機種の相違に対して平滑化されたJava(登録商標)によるAPIであってもよい。その結果、各SDKアプリ120の機種に対する依存度を低下させることができる。
ソケットサービス142は、ソケット通信に関するAPIを提供し、当該APIの呼び出しに応じた処理を実行する。
ソケットフック部143は、ソケットサービス142のAPIの呼び出しを監視し、ソケット通信が行われたことを、予めソケットフック部143に対して登録されている通知先に通知する。本実施の形態では、機器側応答性監視アプリ120cが通知先として登録される。斯かる通知先の登録は、イベントリスナーを用いて実現されてもよい。イベントリスナーとは、イベントの通知を受け付けるためのメソッドを有するオブジェクトをいう。イベントの通知を受けたい側(ここでは、機器側応答性監視アプリ120c)は、イベントの通知元(ここでは、ソケットフック部143)が呼び出し可能なメソッドを有するイベントリスナーを生成し、当該イベントリスナーを、イベントの通知元に登録する。イベントの通知元は、通知すべきイベント(ここでは、ソケット通信)を検知すると、登録されているイベントリスナーのメソッドを呼び出すことで、当該イベントの発生を、通知先に通知する。なお、以下に示されるようなJava(登録商標)言語の関数を利用して、ソケットフック部143が実装されてもよい。
public static void Socket.setSocketImplFactory(SocketImplFactory fac)
イベントフック部144は、SDKプラットフォーム130とコントロールサービス141とのやりとりを(通信)監視し、当該やりとりが行われたことを、予めイベントフック部144に登録されている通知先に通知する。当該通知先についても、イベントフック部144に対応したイベントリスナーが用いられて実現されてもよい。なお、コントロールサービス141は、SDKプラットフォーム130より下層に位置するため、機器10のハードウェアにより近い位置に存在する。したがって、機器10のハードウェアに関して発生したイベント(例えば、キー操作)は、コントロールサービス141からSDKプラットフォーム130に通知される。また、SDKプラットフォーム130が、機器10のハードウェアを利用したい場合、コントロールサービス141に対して当該ハードウェアの利用に関する要求が行われる。このようなやりとりが、イベントフック部144によって監視される。
機器側応答性監視アプリ120cについて更に詳しく説明する。図5は、機器側応答性監視アプリの機能構成例を示す図である。図5に示されるように、機器側応答性監視アプリ120cは、実待機時間計測部121、遅延時間算出部122、負荷抑制部123、キー操作監視部124、ソケット監視部125、及び状態監視部126等として、機器10を機能させる。なお、これら各部は、それぞれ異なるスレッドとして起動されてもよい。
実待機時間計測部121は、実待機時間計測部121として機器10を機能させるスレッドについて、待機状態の所要時間を計測する。すなわち、実待機時間計測部121は、指定された待機時間(以下、「指定時間」という。)の待機と、待機からの復帰への状態遷移とを繰り返し、当該待機の開始から復帰までの経過時間(以下、「実待機時間」という。)を計測する。なお、実待機時間計測部121に係るスレッドの優先度は、他のSDKアプリ120のスレッドの優先度と同等とされるのが望ましい。当該優先度は、OS(Operating System)において管理される優先度である。
図6は、実待機時間計測部の状態遷移を示す図である。図6に示される状態遷移図において、Running状態は、上記での実行状態である。TimedWaiting状態は、上記での待機状態である。
実待機時間計測部121は、Running状態からTimedWaiting状態へ遷移する際に、Running状態の退出時の時刻を記録しておく。TimedWaiting状態へ遷移すると、実待機時間計測部121は、指定時間分の待機を開始する。TimedWaiting状態において指定時間経過後、実待機時間計測部121は、Running状態へ遷移する。但し、機器10の負荷状態によっては、Running状態へ遷移が指定時間に対して遅れる場合が有る。実待機時間計測部121は、Running状態への遷移時に、前回のRunning状態の退出時刻から現在時刻までの経過時間(実待機時間)を計測し、計測結果を、例えば、RAM112に記録する。ここで、Running状態へ遷移が指定時間に対して遅れた場合、実待機時間は、指定時間よりも長くなる。
すなわち、一般的に、非リアルタイムOSの場合、決められた時間に処理が完了することは保障されていない。スレッドのスケジュールは、OSが担っており、システムが高負荷で無い場合は、遅延が大きくなることがないが、高負荷の場合は遅延が大きくなる。例えば、相対的に高い優先度のプロセス(スレッド)が優先して実行されている場合や、低い優先度のプロセス(スレッド)がリソースを占有し、高い優先度のプロセス(スレッド)による当該リソースへのアクセスがブロックされる場合等において、遅延が大きくなる。
そこで、SDKアプリ120と同一の優先度のスレッドについて、図6に示される状態遷移の遅延(≒スレッドスケジュールの遅延)を測定することで、SDKアプリ120の応答の遅延が予測できると考えられる。なお、OSのプロセス(スレッド)スケジューラは、スレッドの優先順位に応じて公平に処理順番を決めるが、低い優先度のスレッドが高い優先度のスレッドをブロックする場合もあるので、実行される順番は、OSのスケジューラの仕様で決まる。
遅延時間算出部122は、機器10(SDKアプリ120)の応答の遅延時間とスレッドの状態遷移の遅延時間とについて、以下の式(1)で示される相関に着目して、実待機時間に基づいて、機器10の負荷の程度を示す指標値を生成する。
機器10の応答の遅延時間≒スレッドの状態遷移の遅延時間 ・・・(1)
ここで、スレッドの状態遷移の遅延時間は、以下の式(2)によって求められる。
スレッドの状態遷移の遅延時間=現時点のRunning状態入場時刻−前回のRunning状態退出時刻−指定時間 ・・・(2)
スレッドの状態遷移の遅延時間は、機器10の負荷の程度を示す指標値の一例である。すなわち、遅延時間算出部122は、実待機時間計測部121によって計測される実待機時間と、実待機時間計測部121に対する指定時間との比較に基づいて、機器10の負荷の程度を示す指標値を生成する。
負荷抑制部123は、遅延時間算出部122によって算出される遅延時間と、遅延時間に対する閾値とを継続的に比較し、比較結果が所定の条件を満たす場合(例えば、遅延時間が閾値以上である場合)に、機器10が高負荷状態であると判定する。負荷抑制部123は、機器10が高負荷状態であると判定された場合に、機器10の負荷を低下させるための処理を実行して、当該高負荷状態の解消を試みる。機器10の負荷を低下させる処理の一例として、機器10おいて起動されている一部のプログラムに係る処理の制限が挙げられる。
キー操作監視部124は、機器10の操作パネル15に対するハードウェアキーの操作を監視し、検出されたキー操作の履歴を記録する。例えば、キー操作監視部124は、イベントフック部144に対してイベントリスナーを登録しておくことにより、キー操作の発生を検知することができる。
ソケット監視部125は、各SDKアプリ120によるソケット通信を監視し、ソケット通信の履歴を記録する。例えば、ソケット監視部125は、ソケットフック部143にイベントリスナーを登録しておくことにより、ソケット通信の発生を検知することができる。
状態監視部126は、各SDKアプリ120の起動状態、アクティブ状態、一時停止状態、及び終了状態等に関する状態遷移等を監視し、状態遷移の履歴を記録する。例えば、状態監視部126は、アプリ管理部131に対してイベントリスナーを登録しておくことにより、各SDKアプリ120の状態遷移を検知することができる。また、状態監視部126は、パネル管理部132にイベントリスナーを登録しておくことにより、いずれかのSDKアプリ120によるパネル利用権限の獲得を検知することができる。更に、状態監視部126は、パネルサービス部133にイベントリスナーを登録しておくことにより、各SDKアプリ120の操作画面の画面遷移を検知することができる。
図7は、第一の実施の形態におけるサービス提供装置の機能構成例を示す図である。図7において、サービス提供装置20は、スキャンサーバアプリ21a、印刷サーバアプリ21b、及び機器側応答性監視サーバアプリ21c等のサーバアプリ21を有する。各サーバアプリ21は、機器10におけるSDKアプリ120と連携するための処理を、サービス提供装置20のCPU204に実行させるアプリケーションプログラムである。スキャンサーバアプリ21aは、スキャンアプリ120aと連携する。印刷サーバアプリ21bは、印刷アプリ120bと連携する。機器側応答性監視サーバアプリ21cは、機器側応答性監視アプリ120cと連携する。
サービス提供装置20は、また、印刷データ記憶部211、応答性設定記憶部221、高負荷閾値記憶部222、高負荷情報記憶部223、及び負荷低下情報記憶部224等を利用する。これら各記憶部は、補助記憶装置202、又はサービス提供装置20にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
印刷データ記憶部211は、機器10の印刷アプリ120bによって印刷される印刷データを記憶する。応答性設定記憶部221、高負荷閾値記憶部222、高負荷情報記憶部223、及び負荷低下情報記憶部224は、機器側応答性監視アプリ120cに関する設定情報や、機器側応答性監視アプリ120cから通知される情報等を記憶する。
以下、情報処理システム1において実行される処理手順について説明する。図8は、第一の実施の形態における情報処理システムが実行する処理手順の一例を説明するための図である。
ステップS101において、ユーザ環境E1の管理者が、管理者端末30に表示されている画面を介して、機器10の応答性設定について、機器10ごとに選択を行う。応答性設定とは、高負荷時における機器10の振る舞い(対処方法)に関する設定をいう。選択肢としては、例えば、以下の(1)及び(2)が有る。
(1)操作レスポンス優先
高負荷時にバックグランド処理を休止させ、操作パネル15の操作に対する応答性を優先させる。バックグラウンド処理の休止は、例えば、当該バックグラウンド処理に係るスレッドの優先度を低下させることによって行われてもよい。又は、当該処理自体が停止されてもよい。
(2)同一優先
高負荷時でもバックグランド処理の休止は行わない。すなわち、高負荷時において特段の対処は行われない。
ここでは、(1)が選択されたこととする。管理者端末30は、機器10ごとの選択結果をサービス提供装置20に送信する。すなわち、機器10ごとに、当該機器10の識別情報(以下、「機体番号」という。)と、当該機器10に関する応答性設定の選択結果とを含む設定要求が、サービス提供装置20に送信される。当該設定要求には、また、ユーザ環境E1ごとの識別情報も含まれる。当該識別情報を、以下「テナントID」という。
サービス提供装置20の機器側応答性監視サーバアプリ21cは、当該設定要求を受信すると、当該設定要求に含まれているテナントID,機体番号、及び選択結果を対応付けて、応答性設定記憶部221に記憶する(S102)。
図9は、応答性設定記憶部の構成例を示す図である。図9に示されるように、応答性設定記憶部221は、テナントID及び機体番号に対応付けて、応答性設定の選択結果を記憶する。
続いて、ユーザ環境E1において、いずれかの機器10が起動されると、当該機器10の機器側応答性監視アプリ120cの実待機時間計測部121は、当該機器10に対する応答性設定の照会要求を、サービス提供装置20に送信する(S121)。当該照会要求には、当該機器10において起動されているSDKアプリ120の識別情報(以下、「アプリ名」という。)の一覧、当該機器10の機種名、及び当該機器10の機体番号等が含まれる。
サービス提供装置20の機器側応答性監視サーバアプリ21cは、当該照会要求を受信すると、当該照会要求に含まれている機体番号に対応するレコードが、応答性設定記憶部221に記憶されているか否かを判定する。該当するレコードが有る場合、機器側応答性監視サーバアプリ21cは、当該レコードに含まれている応答性設定の値を、照会要求の送信元の機器10に返信する(S123)。なお、応答性設定の値と共に、機器10が高負荷であることを判定するための、実待機時間に対する閾値(以下、「高負荷閾値」という。)と、負荷を低下させるための方法を示す情報(以下、「負荷低下方法」という。)とが返信される。高負荷閾値及び負荷低下方法は、高負荷閾値記憶部222に記憶されている。
図10は、高負荷閾値記憶部の構成例を示す図である。図10に示されるように、高負荷閾値記憶部222は、機種名に対応付けて、高負荷閾値及び負荷低下方法を記憶する。高負荷閾値が、機種名ごとに設定されるのは、機種に応じて処理性能が異なることにより、高負荷時の実待機時間の大きさが異なる可能性が有るからである。また、負荷低下方法が、機種名ごとに設定されるのは、例えば、機種に応じて、各種の負荷低下方法の実施の可否が異なるからである。図10では、負荷低下方法の一例として、「サービス停止」及び「優先度低下」が示されている。「サービス停止」は、バックグラウンドで実行されているSDKアプリ120が利用するサービス(本実施の形態では、スキャンサービス部134又は印刷サービス部135)の処理を一時的に停止させることを示す。「サービス停止」は、サービス側が一時停止用のインタフェース及び実装を備えている必要が有るため、特定の機種において実行可能な負荷低下方法である。優先度低下は、バックグラウンドで実行されているSDKアプリ120のスレッドの優先度を低下させることを示す。
ステップS123において返信されるのは、照会要求に含まれている機種名に対応付けられて高負荷閾値記憶部222に記憶されている高負荷閾値及び負荷低下方法である。
実待機時間計測部121が、機器側応答性監視サーバアプリ21cから返信された情報を受信し、当該情報に含まれている応答性設定の値が(1)である場合、機器側応答性監視アプリ120cは、機器10の負荷状態の監視を開始する。
例えば、ステップS125において、実待機時間計測部121は、図6に示した状態遷移を実行することにより実待機時間を計測する。遅延時間算出部122は、実待機時間が計測されるたびに、式(2)に基づいて遅延時間を算出する(S126)。この際、遅延時間算出部122は、今回の遅延時間の期間において、FullGC(ガベージコレクション)等、図6の状態遷移を遅延させる既知の要因が発生した場合、遅延時間の算出を行わなくてもよい。すなわち、当該期間において計測された実待機時間は、無効とされてもよい。FullGCの場合、大きな遅延を引き起こす場合が有り、このような要因によって機器10の負荷状態を判定するのは、適切でないからである。
遅延時間が算出された場合、負荷抑制部123は、算出された遅延時間と、ステップS124において受信された高負荷閾値とを比較して、機器10が高負荷状態であるか否かを判定する(S127)。例えば、当該遅延時間が当該高負荷閾値以上であれば、機器10が高負荷状態であると判定される。
機器10が高負荷状態でないと判定された場合、ステップS125が繰り返される。機器10が高負荷状態であると判定された場合、負荷抑制部123は、当該機器10に係るテナントID及び機体番号と、各SDKアプリ120の状態を示す情報と、遅延時間とを含む通知を、サービス提供装置20に送信する(S128)。サービス提供装置20の機器側応答性監視サーバアプリ21cは、当該通知を受信すると、当該通知に含まれている情報を、高負荷情報記憶部223に記憶する(S129)。
続いて、負荷抑制部123は、負荷を低下させるための処理を実行する(S130)。例えば、当該処理は、ステップS124において受信された負荷低下方法に従って実行される。負荷低下方法が「サービス停止」である場合、負荷抑制部123は、現在バックグラウンド状態にあるSDKアプリ120が利用するサービス(スキャンサービス部134又は印刷サービス部135)に対して、処理の一時停止を要求する。すなわち、該当するSDKアプリ120がスキャンアプリ120aである場合、スキャンサービス部134に対して一時停止が要求される。該当するSDKアプリ120が印刷アプリ120bである場合、印刷サービス部135に対して一時停止が要求される。一時停止を要求されたサービスは、SDKアプリ120から既に要求されて実行中の処理、又はSDKアプリ120から今後要求される処理について実行を停止する。その結果、CPU111等の負荷が低下し、操作パネル15を介した入力に対する応答性の向上を期待することができる。
また、負荷低下方法が「優先度低下」である場合、負荷抑制部123は、現在バックグラウンド状態にあるSDKアプリ120のスレッドの優先度を低下させる。その結果、パネル利用権限を有するSDKアプリ120の優先度が相対的に高くなり、CPU111等の資源が当該SDKアプリ120に対して優先的に割り当てられる。したがって、操作パネル15を介した当該SDKアプリ120への入力に対する応答性の向上を期待することができる。
なお、いずれのSDKアプリ120がバックグラウンド状態であるかについては、状態監視部126によって記録される情報を参照することにより特定可能である。すなわち、ステップS130の時点において、当該情報が一時停止状態を示すSDKアプリ120が、バックグラウンド状態であるSDKアプリ120として特定されてもよい。
負荷抑制部123は、また、当該機器10に係るテナントID及び機体番号と、実行した負荷低下処理の内容とを含む情報(以下、「負荷低下情報」という。)を、サービス提供装置20へ送信する。サービス提供装置20の機器側応答性監視サーバアプリ21cは、当該負荷低下情報を負荷低下情報記憶部224に記憶する(S131)。続いて、ステップS125以降が繰り返される。なお、負荷低下情報記憶部224に記憶された負荷低下情報と、その後のステップS128において機器10から送信される高負荷状態の通知とに基づいて、負荷低下情報が示す負荷低下方法の効果について評価が行われてもよい。例えば、負荷の低下効果が低い負荷低下方法については、見直し等が行われてもよい。
機器側応答性監視アプリ120cによって、ステップS125以降が繰り返し実行されている状況において、ユーザは、機器10の操作パネル15を介して印刷アプリ120bに対して印刷指示を入力する(S111)。続いて、印刷アプリ120bは、印刷指示において選択された印刷データを、サービス提供装置20の印刷サーバアプリ21bから取得(ダウンロード)する(S112)。なお、ステップS112においては、まず、ユーザがアクセス可能な印刷データの一覧情報が、印刷サーバアプリ21bから取得される。当該一覧情報の中から選択された印刷データが、印刷サーバアプリ21b経由で印刷データ記憶部211から取得される。印刷アプリ120bは、印刷データを取得すると、当該印刷データに関して印刷ジョブを開始する(S113)。
ユーザは、また、印刷指示の後、印刷の完了を待たずにスキャンアプリ120aの利用を開始する。例えば、操作パネル15を介してスキャンアプリ120aの操作画面の表示指示が入力されると、操作パネル15に、スキャンアプリ120aの操作画面(スキャン指定画面)が表示される。したがって、このタイミングで、印刷アプリ120bは、バックグラウンド状態となる。
ユーザは、スキャン指定画面を介してスキャンの実行指示を入力する(S114)。スキャンの実行指示には、画像データの読み取り設定や、読み取られた画像データの配信先の指定等が含まれる。続いて、スキャンアプリ120aは、読み取り設定に従って、原稿からの画像データの読み取り(スキャン)を開始する(S115)。画像データの読み取りが完了すると、スキャンアプリ120aは、当該画像データに関するアップロード要求を、サービス提供装置20のスキャンサーバアプリ21aに送信する(S116)。画像データのアップロードが完了すると、スキャンアプリ120aは、ユーザによって指定された配信先を示す情報を含む配信要求を、スキャンサーバアプリ21aに送信する(S117)。スキャンサーバアプリ21aは、アップロードされた画像データを、当該配信要求に含まれている情報が示す配信先へ配信する。
図8に示されるような処理が実行される場合、機器側応答性監視アプリ120cは、例えば、図11に示されるような情報を記録する。図11は、機器側応答性監視アプリによって記録される情報の一例を示す図である。
図11に示されるテーブルの1行は、1秒毎のレコードである。各レコードは、経過時間、メモリ消費量、遅延時間、並びに各SDKアプリ120のアプリ状態及びソケット通信状態等を含む。なお、図11は、各情報が一つのテーブルに記録されなければならないことを示すものではない。図11は、機器側応答性監視アプリ120cの各部によって記録される各情報を時刻に基づいて同期させると、当該テーブルに示されるような情報が得られることを示すものである。
経過時間は、或る時点(例えば、印刷指示の開始時)からの経過時間を示す。メモリ消費量は、当該経過時間におけるメモリ消費量である。例えば、メモリ消費量は、OSに問い合わせることにより取得可能である。遅延時間は、遅延時間算出部122によって算出及び記録される遅延時間である。単位は、ミリ秒である。
各SDKアプリ120(図11では、スキャンアプリ120a及び印刷アプリ120b)のアプリ状態は、当該経過時間における各SDKアプリ120のパネル利用権限の有無(すなわち、フォアグラウンド状態かバックグラウンド状態か)及び画面遷移を示す。すなわち、「:」の前の「B」は、パネル利用権限を有さないバックグランド状態を意味する。「F」は、パネル利用権限を有するフォアグラウンド状態を意味する。また、「B−>F」は、バックグラウンド状態からフォアグラウンド状態への移行を意味し、「F−>B」は、フォアグラウンド状態からバックグラウンド状態への移行を意味する。「:」の後は、表示中の操作画面を示す。アプリ状態は、機器側応答性監視アプリ120cの状態監視部126によって記録される。すなわち、「B」、「F」、「B−>F」、及び「F−>B」は、パネル管理部132から通知されるパネル利用権限の授与又は回収に基づいて記録される。パネル管理部132からの通知には、パネル利用権限の授与又は回収を示す情報と、パネル利用権限の授与先又は回収元のSDKアプリ120のアプリ名とが含まれる。画面遷移は、パネルサービス部133からの画面の描画の通知に基づいて記録される。
ソケット通信状態は、ソケット通信の状態を示す情報である。「:」の前の「C」は、通信相手がサービス提供装置20であることを示す。通信相手の識別は、IPアドレスに基づいて行われてもよい。「:」の後の「R」又は「W」は、通信の方向を示す。「R」は、受信を示す。「W」は、送信を示す。「R」又は「W」に続く括弧内の値は、通信データのサイズと通信回数とを示す。ソケット通信状態は、機器側応答性監視アプリ120cのソケット監視部125によって記録される。すなわち、ソケット通信状態は、ソケットフック部143からソケット監視部125へ通知される情報である。なお、アプリ状態及びソケット状態について、「↓」は、直前の経過時間における状態が継続していることを示す。
各経過時間における印刷アプリ120bのアプリ状態及びソケット通信状態の記録について説明する。図12は、各経過時間における印刷アプリのアプリ状態及びソケット通信状態を説明するための図である。図12において、括弧内の数字は、図11の経過時間に対応する。また、以下の説明における括弧内の数字も、図11の経過時間に対応する。
(1)印刷アプリ120bは、アクティブ状態に遷移してパネル利用権限を獲得し、印刷指定画面を操作パネル15に表示させている。アプリ管理部131は、印刷アプリ120bのアクティブ状態への遷移を、状態監視部126に通知する。また、パネル管理部132は、印刷アプリ120bにパネル利用権限を授与したことを状態監視部126に通知する。更に、パネルサービス部133は、印刷指定画面の描画を状態監視部126に通知する。状態監視部126は、これらの通知に基づいて、「F:印刷指定」を記録する。
(2)印刷アプリ120bは、印刷サーバアプリ21bに対して、印刷データの一覧情報をソケット通信経由で要求する。ソケットフック部143は、当該ソケット通信に関する情報を、ソケット監視部125に通知する。ソケット監視部125は、当該通知に基づいて、「C:R(1KB/1回)」を記録する。
(3)印刷アプリ120bは、一覧情報の中から選択された印刷データについて、ソケット通信経由で印刷サーバアプリ21bに対して取得要求を送信し、印刷指定画面から印刷データ取得画面へ操作画面を遷移させる。ソケットフック部143は、当該ソケット通信に関する情報を、ソケット監視部125に通知する。ソケット監視部125は、当該通知に基づいて、「C:W(1KB/1回)」を記録する。また、パネルサービス部133は、印刷データ取得画面の描画を状態監視部126に通知する。状態監視部126は、当該通知に基づいて、「F:印刷データ取得」を記録する。
(4)機器10は、ユーザからのアプリケーションの切り替え指示に応じ、操作パネル15へスキャンアプリ120aの操作画面を表示させる。この際、アプリ管理部131は、印刷アプリ120bを一時停止状態に遷移させ、当該遷移を状態監視部126に通知する。また、パネル管理部132は、印刷アプリ120bからパネル利用権限を回収し、当該回収を状態監視部126に通知する。状態監視部126は、これらの通知に基づいて「F−>B:画面切替」を記録する。但し、印刷アプリ120bは、一時停止状態へ移行してもソケット通信経由で印刷データの取得(ダウンロード)を実行する。ソケットフック部143は、当該ソケット通信に関する情報を、ソケット監視部125に通知する。ソケット監視部125は、当該通知に基づいて、「C:R(4MB/4回)」を記録する。
(5)印刷アプリ120bは、ソケット通信経由での印刷データの取得を継続する。ソケットフック部143は、当該ソケット通信に関する情報を、ソケット監視部125に通知する。ソケット監視部125は、当該通知に基づいて、「C:R(4MB/4回)」を記録する。(6)〜(8)も同様である。
(9)印刷アプリ120bは、取得した印刷データに関して印刷を開始する。
続いて、各経過時間におけるスキャンアプリ120aのアプリ状態及びソケット通信状態の記録について説明する。図13は、各経過時間におけるスキャンアプリのアプリ状態及びソケット通信状態を説明するための図である。図13において、括弧内の数字は、図11の経過時間に対応する。また、以下の説明における括弧内の数字も、図11の経過時間に対応する。
(4)機器10は、ユーザからのアプリケーションの切り替え指示に応じ、操作パネル15へスキャンアプリ120aの操作画面(スキャン指定画面)を表示させる。この際、アプリ管理部131は、スキャンアプリ120aを一時停止状態からアクティブ状態に遷移させ、当該遷移を状態監視部126に通知する。また、パネル管理部132は、印刷アプリ120bから回収したパネル利用権限をスキャンアプリ120aに授与し、当該授与を状態監視部126に通知する。状態監視部126は、これらの通知に基づいて「B−>F:画面切替」を記録する。
(5)スキャンアプリ120aは、ソケット通信経由でスキャンサーバアプリ21aから配信先候補情報受信する。配信先候補情報は、画像データの配信先の候補を示す情報である。ソケットフック部143は、当該ソケット通信に関する情報を、ソケット監視部125に通知する。ソケット監視部125は、当該通知に基づいて、「C:R(1KB/1回)」を記録する。配信先候補の受信は、(6)においても継続される。配信先情報の受信が完了すると、スキャンアプリ120aは、配信先候補情報をスキャン指定画面に表示する。
続いて、ユーザによって、スキャン指定画面を介して、読み取り設定及び配信先指定等が入力され、スキャンの実行が指示される。
(8)機器10は、原稿の読み取りを開始し、操作画面をスキャン実行画面へ遷移させる。この際、パネルサービス部133は、スキャン実行画面を描画し、当該描画を状態監視部126に通知する。状態監視部126は、当該通知に基づいて、「F:スキャン実行」を記録する。
(9)スキャンアプリ120aは、原稿から読み取られた画像データを、ソケット通信経由でスキャンサーバアプリ21aに送信する。スキャンアプリ120aは、また、操作画面をスキャン配信画面へ遷移させる。ソケットフック部143は、当該ソケット通信に関する情報を、ソケット監視部125に通知する。ソケット監視部125は、当該通知に基づいて、「C:W(1KB/4回)」を記録する。パネルサービス部133は、スキャン配信画面を描画し、当該描画を状態監視部126へ通知する。状態監視部126は、当該通知に基づいて、「F:スキャン配信」を記録する。(10)から(11)において、画像データの送信は継続する。なお、送信される画像データのサイズは、12MBあり、1MB単位で分割されて送信される。
(12)スキャンアプリ120aは、画像データの配信先を示す情報を、ソケット通信経由でスキャンサーバアプリ21aに送信する。ソケットフック部143は、当該ソケット通信に関する情報を、ソケット監視部125に通知する。ソケット監視部125は、当該通知に基づいて、「C:W(1KB/1回)」を記録する。
なお、ソケットフック部143によって検知されるソケット通信の通信元のが、いずれのSDKアプリ120であるかについては、例えば、次のように特定されてもよい。
SDKアプリ120が、Java(登録商標)アプリケーションである場合、例えば、Java(登録商標)の標準クラスであるスレッドグループ(ThreadGroup)を用いて、各SDKアプリ120を識別することができる。スレッドグループとは、スレッド(Thread)やスレッドグループの集合であり、一つ以上のスレッドをスレッドグループに関連付けることができる。また、スレッドグループには、名前(スレッドグループ名)を付加することができる。そして、各スレッド内では、当該スレッドが属するスレッドグループを識別することができる。なお、本実施の形態において、SDKプラットフォーム130の各部、ソケットフック部143、及びイベントフック部144等は、独立したプロセス又は独立したスレッドとして起動されるものではなく、SDKAPIの呼び出し元のSDKアプリ120のスレッド上で動作する。
斯かる仕組みに基づけば、例えば、ソケットフック部143では、以下のように呼び出し元のSDKアプリ120のアプリ名を特定することができる。図14は、呼び出し元のアプリ名の特定方法を説明するための図である。
図中、GPx(xはa〜c)は、スレッドグループを示す。thx(xは、a〜d)は、スレッドを示す。図14の例では、スキャンアプリ120aには、スレッドグループGPbが関連付けられており、スレッドグループ名としてスキャンアプリ120aのアプリ名が付加されている。また、スキャンサービス部134にはスレッドグループGPcが関連付けられている。
スキャンアプリ120aには、メソッドAを実行中のスレッドthaと、メソッドBを実行中のスレッドthbとが存在する。ここで、スレッドthaとスレッドthbとは、スレッドグループGPbに属する。例えば、スキャンアプリ120aのメソッドB内より、スキャンサービス部134のメソッドCが呼び出された場合、メソッドCは、スレッドthb上で動作する。更に、メソッドCよりソケット通信に関するAPIが呼び出された場合、当該呼び出しを検知したソケットフック部143は、スレッドthb上で動作する。したがって、ソケットフック部143が、ソケット通信を検知した時点のスレッドを確認するとスレッドthbが特定される。更に、ソケットフック部143が、スレッドthbが属するスレッドグループを確認すると、スレッドグループGPbが特定される。そこで、ソケットフック部143が、スレッドグループGPbのスレッドグループ名を取得すると、取得されるスレッドグループ名は、ソケット通信元のSDKアプリ120のアプリ名に該当する。
なお、図15は、機器側応答性監視アプリによって記録される情報をグラフ化した図である。図15に示される折れ線グラフの縦軸は遅延時間であり、横軸は経過時間である。遅延時間が大きい時期に、機器10の応答性が低下していることが推定される。
グラフの下側には、スキャンアプリ120a及び印刷アプリ120bのおおよその状態が経過時間に同期して図示されている。画面切り替えが発生した期間(すなわち、印刷データの取得が行われている期間)や、画像データのアップロードと印刷とが並行して実行される期間において、遅延時間が大きくなっている。このような期間では、スキャンアプリ120aの操作画面の応答性が低下することが推測される。そこで、画面切り替え後において、印刷アプリ120bに関して負荷低下処理が実行されることで、スキャンアプリ120aの操作画面の応答性の改善を期待することができる。
図15には、高負荷閾値の一例が示されている。高負荷閾値が、図15に示されるような値である場合、経過時間(4)において、負荷低下処理が実行される。但し、図15のグラフには、負荷低下処理の効果は反映されていない。
なお、遅延時間に対する閾値は、2つ以上であってもよい。図16は、遅延時間に対する閾値が二つである例を示す図である。図16では、高負荷閾値に加え、中負荷閾値が追加され、機器10の負荷状態が、低負荷状態、中負荷状態、及び高負荷状態の3つの状態に分類される例が示されている。例えば、負荷抑制部123は、中負荷状態を検知した場合と、高負荷状態を検知した場合とで、相互に異なる負荷低下処理を実行してもよい。高負荷状態の方が、相対的に負荷の低下効果が高い負荷低下処理が実行されてもよい。
なお、負荷抑制部123は、高負荷状態又は中負荷状態が検知された時点において、図アプリ状態の値(図11参照)の先頭が「B」であるSDKアプリ120を、負荷低下処理の対象として選択する。
続いて、図8のステップS125の詳細について説明する。図17は、実待機時間の計測処理の処理手順の一例を説明するためのフローチャートである。
実待機時間計測部121は、待機の開始時(Running状態の退出時)に、現在時刻を変数T0に代入する(S201)。続いて、実待機時間計測部121は、指定時間分の待機を実行する(S202)。指定時間は、予め指定されている。例えば、wait関数が用いられる場合、wait関数の引数に指定時間が指定される。指定時間分の待機から復帰すると、実待機時間計測部121は、現在時刻を変数T1に代入する(S203)。続いて、実待機時間計測部121は、T1−T0を実待機時間として算出する(S204)。
上述したように、本実施の形態によれば、機器側応答性監視アプリ120cが実行する処理は、図6又は図17に示されるように、負荷の低い処理である。したがって、機器10の負荷状態を比較的低負荷な処理によって推定可能とすることができる。
また、遅延時間が閾値を超える場合、バックグラウンド処理に関して、負荷を低下させるための処理が実行される。その結果、操作パネル15を介したユーザによる操作に対する応答性を向上させることができ、ユーザに対してストレスの小さい操作性を提供できる可能性を高めることができる。
なお、既存のSDKアプリ120(スキャンアプリ120a及び印刷アプリ120b等)内において、ユーザからの操作要求を受け付ける箇所と、当該操作要求に対する応答を返却する箇所のそれぞれに、時間測定の監視コードを埋め込むことも考えられる。また、CPU及びI/Oのトラフィックをカーネルレベルで監視することで負荷を監視することも可能である。しかし、これらの方法では、既存の各SDKアプリ120を改変する必要が有ったり、監視するために多くのCPUリソースが消費されてしまったりする可能性が高い。本実施の形態によれば、このような問題を回避しつつ、機器10の負荷状態を推定することができる。
次に、第二の実施の形態について説明する。第二の実施の形態では第一の実施の形態と異なる点について説明する。したがって、特に言及されない点については、第一の実施の形態と同様でもよい。
第二の実施の形態では、機器10(例えば、スキャンアプリ120a)からサービス提供装置20(例えば、スキャンサービス部134アプリ)に対する要求に対して応答が返却されるまでの時間(以下、「サーバ応答時間」という。)等を計測する例について説明する。サーバ応答時間は、以下の式(3)によって規定される。
サーバ応答時間=サービス実行時間+往復の通信時間 ・・・(3)
サービス実行時間は、機器10からの要求に応じてサービス提供装置20側で実行される処理の所要時間である。往復の通信時間は、機器10からの要求と、サービス提供装置20からの応答とのそれぞれの通信時間の合計である。通信時間は、ユーザ環境E1の通信環境(例えば、通信性能)に依存する。通信環境を計測するための手段として、pingコマンド(Packet Internet Groper)を用いることが考えられる。
図18は、pingコマンドを使用した通信環境の計測を説明するための図である。図18では、サービス提供装置20を対象(宛先)として、機器10において実行されるpingコマンドc1と、機器10を対象(宛先)として、サービス提供装置20において実行されるpingコマンドc2とが示されている。
一般的に、pingコマンドc1に対しては、サービス提供装置20からの応答が正常に返信される。したがって、機器10においては、ユーザ環境E1の通信環境を計測することができる。一方、pingコマンドc2に関するパケットは、ユーザ環境E1に設置されているファイアウォールによって、通過が許可されない。したがって、サービス提供装置20において、pingコマンドを使用して、ユーザ環境E1の通信環境を計測することは困難である。
したがって、各機器10においてpingコマンドを実行させれば、各機器10の通信環境を計測することができる。しかし、既に利用されている全ての機器に対して、通信環境を計測するためのプログラムをインストールするのは経済的ではない。
そこで、第二の実施の形態では、pingコマンドを用いずに、ユーザ環境E1の通信環境をサービス提供装置20側で計測し、更に、機器10から見た場合の、サービス提供装置20の応答時間(すなわち、サーバ応答時間)を、サービス提供装置20側で推定する例について説明する。
図19は、第二の実施の形態におけるサービス提供装置の機能構成例を示す図である。図19中、図7と同一部分には同一符号を付し、その説明は省略する。図19において、サービス提供装置20は、サーバ応答性監視部230を有する。サービス提供装置20は、また、監視機器記憶部231及び監視要求記憶部232を利用する。監視機器記憶部231及び監視要求記憶部232は、補助記憶装置202、又はサービス提供装置20にネットワークを介して接続可能な記憶装置等を用いて実現可能である。
サーバ応答性監視部230は、各機器10から各サーバアプリ21への要求と、各サーバアプリ21から各機器10への応答とを監視して、サーバ応答時間等を推定する。監視機器記憶部231は、サーバ応答時間の推定対象とする監視対象の機器10の機体番号を記憶する。監視要求記憶部232は、監視対象とする要求及び応答を識別するための情報を記憶する。なお、本実施の形態では、監視対象とする要求及び応答が、全ての機器10に対して共通である例を説明するが、機器10ごとに、監視対象とする要求及び応答が異なってよい。
図20は、第二の実施の形態におけるサーバ応答時間の推定方法を説明するための図である。サーバ応答性監視部230は、機器10のSDKアプリ120からの、サーバアプリ21に対する要求の順番の規則性に着目して、サーバ応答時間等を推定する。すなわち、或る要求については、必ず特定の要求の次に送信されるという規則性が有り、当該規則性を利用して、サーバ応答時間等が推定される。図20では、スキャンアプリ120aからスキャンサーバアプリ21aに対して、要求Aの後には、要求Bが送信されることが示されている。
すなわち、スキャンアプリ120aが、スキャンサーバアプリ21aに対して要求Aを送信すると(S301)、スキャンサーバアプリ21aは、要求Aに応じた処理(サービスA)を実行し、その処理結果を含む応答A'を返信する(S302)。スキャンアプリ120aは、応答A'を受信すると、応答A'に含まれている情報を利用した処理を実行する(S303)。続いて、スキャンアプリ120aが、要求Bをスキャンサーバアプリ21aに送信すると(S304)、スキャンサーバアプリ21aは、要求Bに応じた処理(サービスb)を実行し、その処理結果を含む応答B'を返信する(S305)。
スキャンアプリ120aからスキャンサーバアプリ21aへの要求に関して、このような規則性が有る場合、サーバ応答性監視部230は、要求Aの受信を検知すると、要求Aが受信されてから応答A'が返信されるまでの時間(サービス実行時間)を計測する。サーバ応答性監視部230は、また、応答A'が返信されてから、要求Bが受信されるまでの時間を計測する。なお、応答A'が返信されてから、要求Bが受信されるまでの時間を、「サービス待機時間」という。すなわち、サービス待機時間は、以下の式(4)によって規定される。
サービス待機時間=応答A'の通信時間+応答A'利用処理時間+要求Bの通信時間 ・・・(4)
図20に示されるシーケンスの所要時間の内訳は、例えば、図21に示される通りである。図21は、サーバ応答時間の推定に用いられるシーケンスの所要時間の内訳を示す図である。図21において、横軸は、処理が実行される箇所を示し、縦軸は、時間を示す。縦軸に示されている時間t1〜t15は、各処理の所要時間を示す。
時間t1は、ユーザによる入力から要求Aが送出されるまでに機器10内で実行される処理の所要時間である。時間t2は、機器10から要求Aが送出されてから、サービス提供装置20において要求Aが受信されたことがサーバ応答性監視部230によって検知されるまでの所要時間である。時間t3は、サーバ応答性監視部230によって要求Aの受信が検知されてから、スキャンサーバアプリ21aが要求Aを受信するまでの所要時間である。時間t4は、スキャンサーバアプリ21aによる、要求Aに応じた処理(サービスA)の所要時間である。時間t5は、スキャンサーバアプリ21aが応答A'を出力してから、サービス提供装置20による応答A'の送出をサーバ応答性監視部230が検知するまでの所要時間である。なお、例えば、時間t3〜t5が、要求Aに係るサービス実行時間である。
時間t6は、サーバ応答性監視部230が応答A'の送出を検知してから、機器10において応答A'が受信されるまでの所要時間である。時間t7は、機器10において応答A'が受信されてから、応答A'を利用した処理が開始されるまでの所要時間である。時間t8は、応答A'に応じて機器10が実行する処理の所要時間である。時間t9は、当該処理の完了から、要求Bが送出されるまでの所要時間である。なお、例えば、時間t7〜t9は、応答A'利用処理時間である。時間t10は、機器10から要求Aが送出されてから、サービス提供装置20において要求Aが受信されたことがサーバ応答性監視部230によって検知されるまでの所要時間である。なお、例えば、時間t6〜時間t10までが、サービス待機時間である。
時間t11以降の説明については、時間t3〜t7に関する説明により自明であるため省略する。
本実施の形態では、式(3)によって規定されるサーバ応答時間を、サービス提供装置20において算出可能とするために、以下の式(5)及び式(6)によって示される前提が導入される。
(機器10の低負荷時の)応答A'利用処理時間<<サービス待機時間 ・・・(式5)
要求の通信量及び通信速度=応答の通信量及び通信速度 ・・・(式6)
式(5)は、サービス待機時間に対して、応答A'利用処理時間が十分小さい(無視できる程度に小さい)ことを示す。換言すれば、本実施の形態では、単に、相互に前後関係にあるという条件を満たすだけでなく、式(5)及び式(6)を満たすような要求が、要求A及び要求Bとして選択される。すなわち、要求A又は要求Bに該当する要求の識別情報が、監視要求記憶部232に登録される。
式(5)及び式(6)が満たされる場合、サービス待機時間を、機器10とサービス提供装置20との間の往復の通信時間としてみなすことができるため、式(3)によって規定されるサーバ応答時間は、式(3')によって近似することができる。
サーバ応答時間≒サービス実行時間+サービス待機時間 ・・・(3')
ここで、サービス実行時間及びサービス待機時間は、サーバ応答性監視部230によって計測可能な時間である。したがって、第二の実施の形態によれば、機器10から見たサービス提供装置20の応答時間(すなわち、サーバ応答時間)を、サービス提供装置20において推定することができる。なお、機器10ごとに通信速度は異なるため、サービス待機時間は、機器10ごとに異なる。したがって、サーバ応答時間は、機器10ごとに計測(推定)される。
図22は、第二の実施の形態における情報処理システムが実行する処理手順の一例を説明するための図である。図22中、図8と同一処理には同一ステップ番号を付し、その説明は適宜省略する。
ステップS401において、ユーザ環境E1の管理者が、管理者端末30に表示されている画面を介して、サーバ応答時間の計測対象とする機器10の選択を行うと、管理者端末30は、当該ユーザ環境E1のテナントIDと、選択された機器10の機体番号とを含む、サーバ応答時間の計測要求を、サービス提供装置20に送信する。
サーバ応答性監視部230は、当該計測要求を受信すると、当該計測要求に含まれているテナントID及び機体番号をサービス提供装置20の監視機器記憶部231に記憶し、当該テナントID及び機体番号に係る機器10からの要求の監視を開始する(S402)。すなわち、機器10からの各要求には、テナントID及び機体番号そのもの、又はテナントID及び機体番号に関連付けられてサービス提供装置20において管理されている情報が含まれている。なお、複数の機器10が監視対象とされてもよい。
続いて、監視対象とされた機器10に関して、ステップS114〜S117が実行される。ステップS114〜S117については、図8において説明した通りでよい。
サーバ応答性監視部230は、ステップS116において機器10から送信されたアップロード要求がサービス提供装置20において受信されたことを検知すると、サーバ応答時間の計測処理を開始する(S411)。すなわち、本実施の形態では、スキャンアプリ120aからのアップロード要求が、図20において説明した要求Aに相当する。したがって、ステップS411では、アップロード要求に対する応答や、当該応答に応じてステップS117において機器10から送信される配信要求等が監視される。サーバ応答性監視部230は、監視対象とされた要求又は応答が検知された時刻を、例えば、メモリ装置203に機器10別に記録し、記録された時刻に基づいて、サービス実行時間、サービス待機時間、及びサーバ応答時間等を、監視対象とされた機器10ごとに算出する。ここでのサービス実行時間は、アップロード要求の受信が検知されてから、アップロード要求に対する応答が返信されるまでの経過時間である。また、ここでのサービス待機時間は、アップロード要求に対する応答が返信されてから、配信要求が受信されるまでの経過時間である。サービス待機時間は、監視対象の機器10とサービス提供装置20との間のネットワークの通信環境(通信性能)を示す値として利用される。
続いて、サーバ応答性監視部230は、例えば、サービス実行時間、サービス待機時間、及びサーバ応答時間と、これらの時間が算出された機器10に係るテナントID及び機体番号とを含む報告情報を、スキャンサーバアプリ21aと、当該機器10が属するユーザ環境E1の管理者端末30とに送信する(S412)。なお、管理者端末30への報告情報の送信は、電子メールを利用して行われてもよい。例えば、サービス提供装置20には、予め、機器10ごとに、管理者端末30に対するメールアドレスが記憶されていてもよい。
スキャンサーバアプリ21aは、報告情報を受信すると、当該報告情報に応じた処理を実行する(S413)。例えば、スキャンサーバアプリ21aは、当該報告情報に含まれているサービス待機時間が閾値を超える場合は、当該報告情報に含まれているテナントID及び機体番号に係る機器10からの要求に関して制限を加えてもよい。すなわち、サービス待機時間は、機器10とサービス提供装置20との間の通信時間の推定値である。したがって、サービス待機時間が長い機器10は、通信性能の低いネットワークに接続されている可能性が高いと考えられる。しかし、機器10のユーザには、サービス提供装置20の性能の劣化の問題であると認識される可能性が有る。
そこで、サービス提供装置20の性能について、誤解を受けないようにするための対策として、このような機器10に対しては、アップロード可能な画像データの合計サイズ等を制限することで、サーバ応答時間の長期化が回避されてもよい。
アップロード可能な画像データの合計サイズは、例えば、当該機器10からの次回のスキャンサーバアプリ21aに対する何らかの要求の受信に対する応答に含められて、当該機器10に通知されてもよい。当該機器10は、当該通知を示す情報を、例えば、HDD114に記憶する。スキャンアプリ120aは、次回のジョブの実行の際に、当該情報が示す合計サイズの範囲内となるように、ユーザが指定可能なスキャン枚数及び解像度等を制限してもよい。
また、管理者端末30に送信される報告情報には、機器10とサービス提供装置20との連携に関するアドバイスが含まれてもよい。例えば、当該報告情報には、ユーザ環境E1に係る通信環境が、サービス提供装置20との連携に適した通信環境であるか否かを示す情報が含まれてもよい。サービス提供装置20との連携に適した通信環境であるか否かは、サービス待機時間と閾値との比較に基づいて判定されてもよい。
また、機器10の機体番号ごとに、サーバ応答時間及びサービス待機時間の履歴が時系列に記録されてもよい。斯かる履歴に基づいて、特定の時間帯における通信品質の劣化(すなわち、サービス待機時間の長期化)を示す情報が、管理者端末30に送信される報告情報に含められてもよい。また、推奨可能なアプリケーションを示す情報が報告情報に含まれてもよい。
更に、報告情報は、機器10に対して送信されてもよい。機器10は、ジョブの実行前に、当該報告情報を参照して、サーバ応答時間の予測値を表示してもよい。
続いて、ステップS411の詳細について説明する。図23は、サーバ応答時間の計測処理の処理手順の一例を説明するためのフローチャートである。
サーバ応答性監視部230は、機器10からの要求の受信、又はサーバアプリ21からの応答の返信を待機している(S501、S502)。サーバ応答性監視部230は、機器10からの要求がサービス提供装置20において受信されたことを検知すると(S501でYes)、当該要求(以下、「対象要求」という。)の送信元の機器10が監視対象であるか否かを判定する(S503)。当該判定は、対象要求に含まれている情報に基づいて特定される当該機器10のテナントID及び機体番号が、監視機器記憶部231に記憶されているか否かに基づいて行うことができる。
当該テナントID及び機体番号が監視機器記憶部231に記憶されている場合(S503でYes)、サーバ応答性監視部230は、当該要求が監視対象の要求であるか否かを、監視要求記憶部232を参照して判定する(S504)。
図24は、監視要求記憶部の構成例を示す図である。図24において、監視要求記憶部232は、計測開始要求と計測終了要求とのそれぞれの識別情報を記憶する。
計測開始要求は、サーバ応答時間等の計測の開始の契機となる要求である。図24では、スキャンサーバアプリ21aに対するアップロード要求が、計測開始要求である例が示されている。計測終了要求は、サーバ応答時間等の計測の終了の契機となる要求である。図24では、スキャンサーバアプリ21aに対する配信要求が、計測終了要求である例が示されている。なお、計測開始要求は、図20の要求Aに相当し、計測終了要求は、図20の要求Bに相当する。
ステップS504では、対象要求に含まれている要求の内容が、計測開始要求又は計測終了要求に該当するか否かが判定される。すなわち、機器10からの要求には、要求先のサーバアプリ21の識別情報と、要求の識別情報とが含まれている。
対象要求が、監視対象に該当し(S504Yes)、かつ、対象要求が計測開始要求である場合(S505でYes)、サーバ応答性監視部230は、変数T0(機体番号)に、現在時刻を代入する(S506)。なお、変数T0(機体番号)における「(機体番号)」は、対象要求の送信元の機器10の機体番号を示す。すなわち、変数T0(機体番号)は、機体番号別に用意される変数T0のうち、対象要求に係る機体番号に対応する変数T0を意味する。後述される変数T1及びT2についても同様である。
サーバ応答性監視部230は、また、いずれかのサーバアプリ21からの応答の送信を検知すると(S512でYes)、当該応答の送信先が、監視対象の機器10であるか否かを判定する(S513)。斯かる判定は、当該応答(以下、「対象応答」という。)に含まれている情報に基づいて特定されるテナントID及び機体番号が、監視機器記憶部231に記憶されているか否かに基づいて行うことができる。
当該テナントID及び機体番号が監視機器記憶部231に記憶されている場合(S513でYes)、サーバ応答性監視部230は、対象応答が監視対象の応答であるか否かを、監視要求記憶部232を参照して判定する(S514)。すなわち、対象応答が計測開始要求に対する応答であれば、対象応答は、監監視対象であると判定される。なお、対象応答には、いずれの要求に対する応答であるのかを識別するための情報が含まれている。
対象応答が監視対象である場合(S514でYes)、サーバ応答性監視部230は、変数T1(機体番号)に、現在時刻を代入する(S515)。
また、ステップS501において受信された要求(以下、「対象要求」という。)が、計測終了要求に該当する場合(S505でNo)、サーバ応答性監視部230は、変数T2(機体番号)に、現在時刻を代入する(S507)。続いて、サーバ応答性監視部230は、T2(機体番号)−T1(機体番号)の演算結果をサービス待機時間(機体番号)に代入する(S508)。続いて、サーバ応答性監視部230は、T1(機体番号)−T0(機体番号)の演算結果をサービス実行時間(機体番号)に代入する(S509)。続いて、サーバ応答性監視部230は、T2(機体番号)−T0(機体番号)の演算結果を、サーバ応答時間(機体番号)に代入する(S510)。なお、ステップS508〜S5109に関して、変数T0、T1、及びT2の添え字である「(機体番号)」は、対象要求の送信元の機器10の機体番号を示す。
続いて、サーバ応答性監視部230は、サービス待機時間(機体番号)及びサーバ応答時間(機体番号)を、例えば、補助記憶装置202に記録する(S511)。
上述したように、第二の実施の形態によれば、機器10からの要求と、当該要求に対するサービス提供装置20による応答との通信時間を、サービス提供装置20において機器10ごとに推定することができる。また、当該通信時間の推定値に基づいて、サーバ応答時間をサービス提供装置20において推定することもできる。その結果、例えば、サービス提供装置20の運用者は、機器10ごとに、サービス提供装置20の応答性を把握することができる。
次に、第三の実施の形態について説明する。第三の実施の形態では第一の実施の形態又は第二の実施の形態と異なる点について説明する。したがって、特に言及されない点については、第一の実施の形態又は第二の実施の形態と同様でもよい。
図25は、第三の実施の形態におけるサービス提供装置の機能構成例を示す図である。図25中、図3又は図19と同一部分には同一符号を付し、その説明は省略する。
第三の実施の形態において、サービス提供装置20は、第一の実施の形態における構成と第二の実施の形態における構成とを含む構成を有する。
なお、機器10は、例えば、図4において説明した構成を有する。
図26は、第三の実施の形態における情報処理システムが実行する処理手順の一例を説明するための図である。図26中、図8又は図22と同一ステップには同一ステップ番号を付し、その説明は省略する。
第三の実施の形態では、基本的に、第一の実施の形態における処理手順と第二の実施の形態における処理手順とが組み合わされた処理手順が実行される。但し、図26では、図22のステップS412の代わりに、ステップS451が実行される。ステップS451において、サーバ応答性監視部230は、機器10から受信された遅延時間や、当該機器10に係るサービス待機時間、及びサーバ応答時間等に基づいて、応答性の低下の要因の分析処理を実行する。ここでいう応答性は、ユーザから見た場合の機器10及びサービス提供装置20による応答性をいう。当該分析処理は、サーバ応答時間が閾値以上である場合に行われてもよい。
例えば、機器10から受信された遅延時間が所定値以上である場合には、機器10における並列処理が、応答性の低下の要因であると判定されてもよい。また、サービス実行時間が所定値以上である場合には、サービス提供装置20の負荷の増加が、応答性の低下の要因であると判定されてもよい。また、サービス待機時間が所定値以上である場合は、ユーザ環境E1の通信環境が、応答性の低回の要因であると判定されてもよい。なお、遅延時間、サービス実行時間、及びサービス待機時間等は、機器10ごとに計測される。したがって、応答性の判定は、機器10ごとに実行される。
なお、解析結果が、機器10における並列処理が要因であることを示す場合には、サーバ応答性監視部230は、当該解析結果を当該機器10に送信してもよい。この場合、当該機器10は、負荷低下処理を実行してもよい。
また、解析結果が、サービス提供装置20の負荷の増加を示す場合には、サービス提供装置20において利用頻度の低いサーバアプリ21や、現在利用されていないサーバアプリ21等が停止されてもよい。また、リアルタイムでの実行が要求されていない処理が、後回しにされてもよい。
また、解析結果が、ユーザ環境E1の通信環境が要因であることを示す場合には、第二の実施の形態において説明した通りの対策が行われてもよい。
上述したように、第三の実施の形態によれば、機器10側において計測される遅延時間と、サービス提供装置20側で計測されるサービス実行時間及びサービス待機時間等に基づいて、機器10とサービス提供装置20との連携によって実現される処理に関する応答性の低下について、要因(原因)の切り分けを行うことができる。
なお、上記各実施の形態において、実待機時間計測部121は、第1の計測部の一例である。遅延時間算出部122は、生成部の一例である。負荷抑制部123は、制限部の一例である。サービス提供装置20は、情報処理装置の一例である。サーバ応答性監視部230は、第2の計測部の一例である。
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。