JP2017174038A - 情報処理システム、情報処理方法およびプログラム - Google Patents
情報処理システム、情報処理方法およびプログラム Download PDFInfo
- Publication number
- JP2017174038A JP2017174038A JP2016057853A JP2016057853A JP2017174038A JP 2017174038 A JP2017174038 A JP 2017174038A JP 2016057853 A JP2016057853 A JP 2016057853A JP 2016057853 A JP2016057853 A JP 2016057853A JP 2017174038 A JP2017174038 A JP 2017174038A
- Authority
- JP
- Japan
- Prior art keywords
- session
- request
- storage unit
- time
- timeout
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Computer And Data Communications (AREA)
Abstract
【課題】サーバの処理能力に起因するセッションタイムアウトを防止すること。
【解決手段】
情報処理システムは、複数のクライアント装置と通信を行うために確立された複数のセッションの情報を記憶するセッション情報記憶部と、受信した複数のリクエストのうち、処理が開始されないリクエストを一時的に記憶するリクエスト記憶部と、前記セッション情報記憶部にセッションの情報が記憶された複数のセッションのうち、処理が実行されていない状態で経過した経過時間が予め定められたタイムアウト時間を経過したセッションについて、当該セッションに対応するクライアント装置から受信したリクエストが前記リクエスト記憶部に格納されていることに応じて、前記タイムアウト時間の経過に起因する当該セッションの無効化を抑止する制御部とを備える。
【選択図】図3
【解決手段】
情報処理システムは、複数のクライアント装置と通信を行うために確立された複数のセッションの情報を記憶するセッション情報記憶部と、受信した複数のリクエストのうち、処理が開始されないリクエストを一時的に記憶するリクエスト記憶部と、前記セッション情報記憶部にセッションの情報が記憶された複数のセッションのうち、処理が実行されていない状態で経過した経過時間が予め定められたタイムアウト時間を経過したセッションについて、当該セッションに対応するクライアント装置から受信したリクエストが前記リクエスト記憶部に格納されていることに応じて、前記タイムアウト時間の経過に起因する当該セッションの無効化を抑止する制御部とを備える。
【選択図】図3
Description
本発明は、情報処理システム、情報処理方法およびプログラムに関する。
ネットワークを介してサーバとクライアント装置が接続され、クライアント装置からのリクエストに応じた処理をサーバが行うようなシステムでは、サーバとクライアント装置間で確立されるセッションを用いてサーバ、クライアント装置間の通信が管理される。
クライアント装置とサーバ間の通信を管理する技術としていくつかの技術が知られている。例えば、Webサーバからの要求に基づく処理を実行している間は、Webサーバが送信したリクエストをWebブラウザが無効化しないようにする技術がある(例えば、特許文献1参照)。また、他のサーバが記録するアクセス履歴を参照し、クライアント端末が他のサーバにアクセスしていることを確認したときに、自サーバのアプリケーションに対するタイムアウト時間を調整する技術がある(例えば、特許文献2参照)。他の技術として、ネットワーク上のパケットを転送する通信装置において、転送するパケットを転送順に蓄積するキューを備え、往復遅延時間がより短い通信セッションに属するパケットほど、より優先的に転送されるようにキュー上のパケットを並べ替える技術がある(例えば、特許文献3参照)。
クライアント側の様々な機器がインターネットに接続され、アプリケーションサーバ等のサーバと情報交換を行うIoT(Internet of Things)技術の普及により、多くのクライアント装置がサーバに接続される。例えば、ネットワークに接続された、各家庭内にある家電製品や、様々な設備に設けられたセンサ等の機器等から、多くのリクエストがサーバに送信される。このような状況では、サーバとクライアント装置との間に確立されるセッション数について、例えば、従来は数百から数万といったセッションの数だったものが、数百万や数千万といった数のセッションになることも想定される。
アプリケーションサーバは、通常、各クライアント装置からは間欠的にしかリクエストを受信しないため、同時に処理できるリクエストの数よりも多くのセッションを開始した状態で、クライアント装置からのリクエストを受け付ける。そのため、多くのクライアント装置との間でセッションが確立された状態で、アプリケーションサーバが各クライアント装置から一時期に多くのリクエストを受信する状況が発生する場合がある。
例えば、ネットワークに接続されたテレビに配信される人気番組の中で人気投票等が行われた場合、そのテレビ端末からテレビ番組の投票データの処理を行うサーバに対して、視聴者が入力した投票データを送信するリクエストが一斉に送信される。また、人気のあるミュージシャンのコンサートのチケットの販売をインターネット上で実施する場合、チケット販売に関する処理を行うサーバに対して、チケット販売開始と同時にチケット購入に関する多くのリクエストが集中する。
他の例としては、特定の地域で一時的な停電等が起こった場合、ネットワークに接続してアプリケーションサーバと通信を行う冷蔵庫等の家電機器から、停電から復帰した直後に一斉にリクエストがアプリケーションサーバに送信されることが想定される。このような場合、各家電機器との通信を行うためのセッションを開始するリクエストはすぐに処理されて多数のセッションが確立される。しかし、セッション確立後に、各家電機器から一定量の処理負荷を要するリクエストが続けて大量にサーバに送信されることになる。
多くのクライアント装置との間でセッションが確立された状態で、アプリケーションサーバが各クライアント装置から一時期に多くのリクエストを受信すると、アプリケーションサーバが受信したリクエストを処理しきれない場合が発生し得る。この場合、アプリケーションサーバは受信した多くのリクエストを処理しきれず、実行待ちとなるリクエストの多くは、セッションタイムアウトによって無効化(又は破棄)されてしまうことが想定される。
ここで、サーバの負荷に応じてセッションのタイムアウト時間を長くすることが考えられるが、どの程度のタイムアウト時間に設定すれば良いかの判断は容易ではない。また、タイムアウト時間を長く設定すると、機器の障害に起因するエラーの検出が遅くなってしまう。そのため、同時期に多くのリクエストを受信した場合などにおいて、サーバ側の処理能力に起因するセッションのタイムアウトを回避できることが望ましい。
1つの側面では、本発明は、サーバの処理能力に起因するセッションタイムアウトを防止することを目的とする。
発明の一観点によれば、複数のクライアント装置からのリクエストを受信するリクエスト受付部と、前記複数のクライアント装置と通信を行うために確立された複数のセッションの情報を記憶するセッション情報記憶部と、前記リクエスト受付部が受信した複数のリクエストのうち、処理が開始されないリクエストを一時的に記憶するリクエスト記憶部と、前記セッション情報記憶部にセッションの情報が記憶された複数のセッションのうち、セッションに対応するリクエストの処理が実行されていない状態で経過した経過時間が予め定められたタイムアウト時間を経過したセッションを検出するタイムアウト検出部と、前記タイムアウト検出部によって前記経過時間が前記タイムアウト時間を経過したと検出されたセッションについて、当該セッションに対応するクライアント装置から受信したリクエストが前記リクエスト記憶部に格納されていることに応じて、前記タイムアウト時間の経過に起因する当該セッションの無効化を抑止する制御部とを有する情報処理システムが提供される。
一実施態様によれば、サーバの処理能力に起因するセッションタイムアウトを防止することができる。
以下、図面を参照して、一実施形態について説明する。
[システム構成]
図1は、実施例1における情報処理システム10のシステム構成の一例を示す図である。図1に示すように、本実施形態に係る情報処理システム10は、N(Nは自然数)個のサーバ100−1〜100−Nと、データベース(DB)サーバ110と、ネットワークスイッチ120と、管理サーバ130とを備える。情報処理システム10は、インターネット等の外部通信回線であるネットワーク20を介してクライアント装置30と接続される。クライアント装置30は、ユーザからの操作を受けてサーバに処理を要求する端末装置だけでなく、ネットワークに接続された様々な電子機器を含む。ネットワークに接続された電子機器の例としては、例えば、インターネットを介してサーバに機器の状態を通知する冷蔵庫等のネットワーク家電や、通信機能付きのテレビ、オフィスビルや各家庭に設置された電気メータやガスメータ、温度センサ等のセンサ機器等を含む。
図1は、実施例1における情報処理システム10のシステム構成の一例を示す図である。図1に示すように、本実施形態に係る情報処理システム10は、N(Nは自然数)個のサーバ100−1〜100−Nと、データベース(DB)サーバ110と、ネットワークスイッチ120と、管理サーバ130とを備える。情報処理システム10は、インターネット等の外部通信回線であるネットワーク20を介してクライアント装置30と接続される。クライアント装置30は、ユーザからの操作を受けてサーバに処理を要求する端末装置だけでなく、ネットワークに接続された様々な電子機器を含む。ネットワークに接続された電子機器の例としては、例えば、インターネットを介してサーバに機器の状態を通知する冷蔵庫等のネットワーク家電や、通信機能付きのテレビ、オフィスビルや各家庭に設置された電気メータやガスメータ、温度センサ等のセンサ機器等を含む。
情報処理システム10は、例えばクライアント装置30を介して受信したユーザからのリクエストに応じた処理を行う。情報処理システム10は、各クライアント装置30から受信したリクエストによって要求された処理を行った結果をクライアント装置30に応答する。
サーバ100−1〜100−Nのそれぞれは、クライアント装置から送信されたリクエストに係る様々な処理を行うアプリケーションプログラムを実行するサーバ装置である。以下、サーバ100−1〜100−Nは、それらを区別不要の場合、サーバ100と記述する。サーバ100は、図1では、N個のサーバ100−1〜100−Nを備える例としているが、サーバ100の数は複数個である必要はなく、1つであってもよい。
データベース(DB)サーバ110は、サーバ100で行う処理に関連するデータを記憶するデータベース装置であり、サーバ100上で実行されるOSやアプリケーションが用いるデータ等を記憶する。DBサーバ110は、ストレージ装置や、大きな記憶容量の記憶装置を有するサーバ等によって実現される。
ネットワークスイッチ120は、ネットワーク20に接続され、サーバ100や管理サーバ130と、ネットワークに接続された装置との間の通信パケットを適切な宛先装置に転送する。管理サーバ130は、情報処理システム10内の通信回線であるローカルバス131を介して、情報処理システム10内のサーバ100−1〜100−N、DBサーバ110、ネットワークスイッチ120等と通信を行うことにより、各装置の管理を行う。
[ハードウェア構成]
図2は、サーバ100のハードウェア構成の一例を示す図である。サーバ100は、CPU101(101A〜101D)と、入出力装置インタフェース回路102と、メモリ103と、ネットワークインタフェース回路104と、DBサーバインタフェース回路105と、ローカルバスインタフェース回路106と、ハードディスクドライブ(HDD)107とを備える。各CPU(Central Processing Unit)101は、内部バス108を介して、メモリ103や入出力装置インタフェース回路102等の各インタフェース回路(104〜106)にアクセスする。
図2は、サーバ100のハードウェア構成の一例を示す図である。サーバ100は、CPU101(101A〜101D)と、入出力装置インタフェース回路102と、メモリ103と、ネットワークインタフェース回路104と、DBサーバインタフェース回路105と、ローカルバスインタフェース回路106と、ハードディスクドライブ(HDD)107とを備える。各CPU(Central Processing Unit)101は、内部バス108を介して、メモリ103や入出力装置インタフェース回路102等の各インタフェース回路(104〜106)にアクセスする。
CPU101(101A〜101D)は、サーバ100上で様々な処理を行うプロセッサのハードウェア資源であり、サーバを構成する電子部品の一つである。図2の例では、サーバ100が、CPU101A、CPU101B、CPU101C、CPU101Dの4つのCPUを備える例を示しているが、CPUの数は4つに限られず、より多くのCPUを備えてもよい。また、CPUの中に複数のCPUコアや、ハードウェアスレッドを備え、1つのCPUによって、複数のアプリケーションプログラムのプロセスの処理を並行して行えるCPUをCPU101として用いてもよい。さらに、CPUは、サーバによってその搭載数が異なっていてもよい。
入出力装置インタフェース回路102は、サーバ100にマウスやキーボード等の周辺デバイスが接続される場合に、それら周辺デバイスへの入出力を制御するための回路である。メモリ103は、Random Access Memory(RAM)等の記憶デバイスである。図2では、1つのメモリ103を図示しているが、メモリ103は複数のRAMを含んでもよく、また、CPU101−1〜101−Nごとに対応する別々のメモリ103(103−1〜103−N)を備えるようにしてもよい。
ネットワークインタフェース回路104は、ネットワーク20を介して他の装置と通信を行うためのインタフェース回路であり、図1の例では、ネットワークスイッチ120を介してネットワーク20と接続される。DBサーバインタフェース回路105は、DBサーバ110へのアクセスを行うためのインタフェース回路である。ローカルバスインタフェース回路106は、ローカルバス131を介して情報処理システム内の管理サーバ130や他のサーバ100等と通信を行うためのインタフェース回路である。
ハードディスクドライブ107は、CPU101で実行されるプログラムや、CPU101上で実行される処理が扱うデータを記憶する記憶媒体である。
以下に説明する、サーバ100で実行されるウェブサーバ140、アプリケーションサーバ150等の処理を行うためのプログラムやデータはメモリ103やHDD107、または、DBサーバ110に格納される。CPU101は、HDD107等に格納されたプログラムやデータを読み出して、ウェブサーバ140、アプリケーションサーバ150等で実行される処理に関するプログラムを実行する。
尚、管理サーバ130を図2に示すハードウェア構成によって実現してもよい。この場合、図2のように4つのCPU(101A〜101D)を実装することに替えて、1つのCPU101Aのみ実装するようにしてもよい。管理サーバ130が行う情報処理システム10内の各装置の管理を行う処理は、管理サーバ130のメモリ103に格納したプログラムをCPU101Aが実行することによって行われる。
[機能ブロック1]
図3は、実施例1に係る情報処理システムの機能ブロック図の一例を示す図である。図3において、サーバ100は、ウェブサーバ140とアプリケーションサーバ150とを含む。図3では、説明の便宜上、サーバ100に1つのクライアント装置30が接続される図としているが、実際には、ネットワークを介して多くのクライアント装置30がサーバ100に接続される。
図3は、実施例1に係る情報処理システムの機能ブロック図の一例を示す図である。図3において、サーバ100は、ウェブサーバ140とアプリケーションサーバ150とを含む。図3では、説明の便宜上、サーバ100に1つのクライアント装置30が接続される図としているが、実際には、ネットワークを介して多くのクライアント装置30がサーバ100に接続される。
ウェブサーバ140の処理及びアプリケーションサーバ150の処理は、サーバ100に含まれるCPU101によって所定のプログラムを実行することによって実現される。ここで、ウェブサーバ140及びアプリケーションサーバ150の処理は、1つのCPUで実行されてもよいし、それぞれ異なるCPUで実行されてもよい。また、ウェブサーバ140の処理を情報処理システム10に含まれるサーバ100−1で実行し、アプリケーションサーバ150の処理を、他のサーバ100−2〜100−Nで実行するようにしてもよい。
サーバ100は、クライアント装置30から受信したリクエストを、ウェブサーバ140とアプリケーションサーバ150とを用いて処理を行う。具体的には、ウェブサーバ140は、クライアント装置30からのリクエストを受信する。アプリケーションサーバ150は、ウェブサーバ140が受信したリクエストで要求された処理を実行し、実行結果をウェブサーバ140に受け渡す。ウェブサーバ140は、アプリケーションサーバ150から受信した実行結果をクライアント装置30に返信する。
ウェブサーバ140は、キュー141を有する構成としてもよい。キュー141は、クライアント装置30から受信したリクエストをアプリケーションサーバ150に転送するまでの間、受信したリクエストを一時的に格納する記憶領域である。キュー141の記憶領域は、例えば、メモリ103の一部の領域をキュー141の領域として割り当てることによって得られる。ウェブサーバ140が受信したリクエストをアプリケーションサーバ150がすぐに受信できる場合、ウェブサーバ140はクライアント装置30から受信したリクエストをキュー141に格納することなくアプリケーションサーバ150に転送するようにしてもよい。
アプリケーションサーバ150は、キュー151と、リクエスト処理部152と、セッション格納部153と、セッションタイムアウト監視部154とを有する。リクエスト処理部152とセッションタイムアウト監視部154等の処理は、アプリケーションサーバ150の処理を実行するCPU101によって、メモリ103やHDD106等に格納された所定のプログラムを実行することにより実現される。
リクエスト処理部152は、ウェブサーバ140から受信したリクエストで要求された処理を実行する。また、リクエスト処理部152は、リクエストを送信したクライアント装置30との通信に用いるセッションの作成や削除、及び、セッションに関連する情報の更新等の処理を行う。リクエスト処理部152の処理は、ウェブサーバ140からリクエストを受信することに応じて呼び出されるアプリケーション処理を行うプログラムによって実行される。アプリケーション処理の詳細については、図10(B)及び図12を用いて後述する。
キュー151は、リクエスト処理部152がリクエストを処理できるようになるまでの間、ウェブサーバ140から受信したリクエストを一時的に格納する記憶領域である。キュー151の記憶領域は、例えば、メモリ103の一部の領域をキュー151の領域として割り当てることによって得られる。なお、図3の機能ブロック図の例において、キュー151の記憶領域として十分大きな領域を確保できる場合、ウェブサーバ140に含まれるキュー141を設けない実装としても良い。また、他の実装例として、ウェブサーバ140とアプリケーションサーバ150との間で共有するキューをメモリ103上の共有メモリ領域に設ける実装としてもよい。
セッション格納部153は、メモリ103又はHDD107の一部の記憶領域に割り当てられた、セッションに関連する情報を記憶する領域である。セッションに関連する情報としては、セッション識別情報(セッションID)、アプリケーション識別情報(アプリケーションID)、クライアント装置の識別情報(クライアントID)、セッションを確立したクライアント装置との通信を行うための各種設定情報が含まれる。ここで、セッション識別情報(セッションID)は、サーバ100とクライアント装置30との間で確立されるセッションごとに付与される固有の識別情報である。アプリケーション識別情報(アプリケーションID)は、アプリケーションサーバ150上で実行されるアプリケーションごとに付与される固有の識別情報である。また、クライアント装置の識別情報(クライアントID)は、クライアント装置ごとに付与される固有の識別情報である。
セッションタイムアウト監視部154は、定期的に、又は管理サーバ130からの要求があった場合やその他の特定のタイミングで、セッションタイムアウトの監視処理を行う。セッションタイムアウトの監視処理において、セッションタイムアウト監視部154は、セッション格納部153に格納されたセッション情報に対応する各セッションが所定のタイムアウト時間を経過したか否かを監視する。セッションタイムアウト監視部154による処理の詳細については、後述する。
[クライアント装置とサーバ間で確立されるセッション]
図4は、クライアント装置30とサーバ100間で確立されるセッションに関する説明を行うための図である。クライアント装置30は、定期的に、または、外部入力に応じて、サーバ100と通信を行う。クライアント装置30は、サーバ100との通信を行うために、まず、サーバ100に対してセッション開始要求のリクエストを送信する。
図4は、クライアント装置30とサーバ100間で確立されるセッションに関する説明を行うための図である。クライアント装置30は、定期的に、または、外部入力に応じて、サーバ100と通信を行う。クライアント装置30は、サーバ100との通信を行うために、まず、サーバ100に対してセッション開始要求のリクエストを送信する。
クライアント装置30からサーバ100にセッション開始要求のリクエストが送信されると、クライアント装置30とサーバ100間で通信プロトコルに沿ったハンドシェイクが行われ、セッションが確立される。セッションを確立する処理において、サーバ100は、クライアント装置30から要求されたセッションに関するセッション情報を生成し、セッション格納部153に格納する。
クライアント装置30とサーバ100間でセッションが確立されると、サーバ100は、クライアント装置30にセッションの識別情報を送信する。クライアント装置は、サーバ100に対してアプリケーションの処理を要求するリクエストを送信する際、セッションの識別情報と共にリクエストを送信する。
サーバ100は、クライアント装置30からリクエストを受信すると、セッション格納部153に格納した、リクエストに対応するセッションに関連する情報を更新し、リクエストで要求されたアプリケーションの処理を実行する。実行された処理結果は、リクエストに対する応答としてクライアント装置30に送信される。
クライアント装置30とサーバ100間で確立されたセッションは、クライアント装置30からのセッション終了要求によって終了する。サーバ100がクライアント装置30からセッション終了要求のリクエストを受信すると、対応するセッションの情報をセッション格納部153から削除し、クライアント装置30にセッション終了処理が完了した旨の応答を行う。
クライアント装置30とサーバ100間で確立されたセッションは、セッション終了要求による終了以外に、セッションタイムアウトによっても終了する。サーバ100は、クライアント装置30とのセッションが確立された後、対応するセッションに係るクライアント装置30から要求された処理が実行されていない期間を監視する。
図4の例では、セッション開始後にクライアント装置30から要求された処理がサーバ100で実行されるまでの期間や、サーバ100での処理実行後にセッション終了要求が処理されるまでの期間がセッションタイムアウト監視期間として図示されている。なお、セッションタイムアウト監視期間は図4に図示した期間に限られず、サーバ100でクライアント装置30から要求された処理が実行された後に、同じセッションに関する次に要求された処理が実行されるまでの期間も監視期間に含まれる。
セッションタイムアウトの監視は、セッションを確立したクライアント装置30から要求される処理を実行していない期間が所定のタイムアウト時間を経過するか否かによって行われる。その際、本実施例では、タイムアウト時間の経過だけでなく、クライアント装置30からのリクエストがサーバ100に届いているか否かも考慮してセッションタイムアウトに起因するセッションの無効化(破棄)を判断する。
本実施例におけるセッションタイムアウトの判定処理について図3を参照しながら説明する。サーバ100は、多くのクライアント装置30と通信を行うためのセッションを確立し、各クライアント装置30からリクエストを受信する。そのため、サーバ100のセッション格納部153には、多くのクライアント装置30との間で確立されたセッションに関する情報が格納される。
セッションタイムアウト監視部154は、例えば定期的なタイミングで、セッション格納部153に格納されたセッション情報のそれぞれに対応するセッションについて、セッションタイムアウトを監視する。セッションタイムアウト監視部154は、監視対象となる複数のセッションのうち、サーバ100が対象となるセッションに関する処理を実行していない期間が各セッションについて定められた所定のタイムアウト時間を超えているか否かを判定する。
従来の技術においては、セッションタイムアウト監視部154がセッションタイムアウトを検出したセッションについては、強制的にセッションを無効化又は破棄していた。しかし、IoT技術の普及に伴ってサーバ100が非常に多くのクライアント装置30から要求された処理を行う状況では、クライアント装置30からのリクエストが一時期に集中する場合がある。このような場合、サーバ100の物理的な処理能力不足によってアプリケーションサーバ150が処理できなかったリクエストについては、一時的にキュー151又はキュー141に格納される。
キュー151又はキュー141に大量の処理待ちリクエストが格納されている場合、従来技術ではキュー151又はキュー141に格納された多くのリクエストはセッションタイムアウトによって破棄され、リクエストを送信したクライアント装置にセッションタイムアウトのエラー応答がされていた。すると、セッションタイムアウトのエラー応答を受信した多くのクライアント装置は、再度、セッション開始リクエストからやり直すということになる。このような動作は、サーバ100の処理負荷を増加させるだけでなく、ネットワークの輻輳をも招くという問題があった。そのため、サーバ100の処理能力不足に起因するセッションタイムアウトは、できる限り回避できることが望ましい。
本実施例では、セッションタイムアウトの判定において、タイムアウト時間を経過したか否かを判定するだけでなく、セッションタイムアウトの判定を行う時点でセッションに対応するクライアント装置30からの処理のリクエストが届いているか否かも判定する。
セッションタイムアウト監視部154は、例えば定期的なセッションタイムアウトの判定を行う際、所定のタイムアウト時間が経過したセッションを抽出する。抽出したセッションのそれぞれに対して、セッションタイムアウト監視部154は、各セッションに関連したリクエストがキュー151に格納されているかどうかを判定する。ここで、キュー141用に確保するメモリ領域をアプリケーションサーバとウェブサーバ140が共有するメモリ領域に設ける実装も考えられる。この場合、セッションタイムアウト監視部154は、キュー151だけでなく、キュー141も参照でき、各セッションに関連したリクエストがキュー141又はキュー151のいずれかに格納されているかどうかを判定する。以下、説明を簡単にするために、セッションタイムアウト監視部154がキュー151だけでなくキュー141も参照できるものとして説明する。
タイムアウト時間を経過したものとして抽出されたセッションであっても、関連したリクエストがキュー151又はキュー141に格納されている場合には、セッションタイムアウト監視部154は、セッションタイムアウトに起因するセッションの無効化(破棄)を抑止する。キュー151又はキュー141に実行すべきリクエストが格納されている場合、サーバ100の処理能力に起因してリクエストの処理が待たされている状態となっている。そのため、キュー151又はキュー141に実行待ちの状態で格納されているリクエストに関するセッションについては、たとえセッションタイムアウトとなる場合であっても、セッションタイムアウト監視部154は無効化(破棄)しない。
一方、タイムアウト時間を経過したものとして抽出されたセッションであって、関連したリクエストがキュー151又はキュー141に格納されていないセッションについては、セッションタイムアウト監視部154によるセッションの無効化が行われる。これは、使われないままセッション管理用として確保され続けているメモリを解放して、他のセッションの管理に使用できるようにするためである。
[実施例1の効果]
上述のように、実施例1では、セッションタイムアウトと判定されるセッションであっても、セッションに関連したリクエストが実行待ち状態でキューに格納されている場合にはセッションタイムアウトと判定されたセッションの無効化を行わない。このように制御することで、サーバ100の処理能力に起因するセッションタイムアウトを防止することができるようになる。
上述のように、実施例1では、セッションタイムアウトと判定されるセッションであっても、セッションに関連したリクエストが実行待ち状態でキューに格納されている場合にはセッションタイムアウトと判定されたセッションの無効化を行わない。このように制御することで、サーバ100の処理能力に起因するセッションタイムアウトを防止することができるようになる。
[機能ブロック2]
図5は、実施例2に係るサーバ100の機能ブロック図の一例を示す図である。図5において、図3の実施例1での機能ブロック図と同じ符号が付された構成要素については、基本的に、実施例1での構成要素と同様の機能を有するものとする。
図5は、実施例2に係るサーバ100の機能ブロック図の一例を示す図である。図5において、図3の実施例1での機能ブロック図と同じ符号が付された構成要素については、基本的に、実施例1での構成要素と同様の機能を有するものとする。
実施例2では、セッションタイムアウトとなったセッションに関連したリクエストがキュー151又はキュー141に格納されているかどうかを判定することを容易にするために、実施例1の図3に示される機能ブロックに加えて、受付セッションID格納部160が設けられる。
受付セッションID格納部160は、サーバ100がクライアント装置30からリクエストを受信する度に、受信したリクエストに対応するセッションのセッション識別情報を格納する記憶領域である。受付セッションID格納部160の記憶領域は、例えば、メモリ103の一部の領域を割り当てることによって確保される。サーバ100に受付セッションID格納部160を設けたことに伴い、ウェブサーバ140に、受付セッションID書込み部142と、受付セッションID削除部143を設ける。
受付セッションID書込み部142は、ウェブサーバ140が、クライアント装置30からリクエストを受信する度に、受信したリクエストのそれぞれに対応するセッションの識別情報を、受付セッションID格納部160に格納する。受付セッションID削除部143は、リクエストに対応する処理の実行結果がクライアント装置30に応答されるのに合わせて、実行結果を応答したリクエストに対応するセッション識別情報を受付セッションID格納部160から削除する。
実施例2でのセッションタイムアウト監視部154は、セッションタイムアウト判定を行う際に、キュー151又はキュー141に新たなリクエストが格納されているかどうかを判定する代わりに受付セッションID識別部に格納された情報を判定する。ここで、受付セッションID格納部160に格納されたセッション識別情報は、リクエストを受信してからリクエストが要求する処理が完了してクライアント装置30に実行結果が応答されるまで保持される。すなわち、受信したリクエストをリクエスト処理部152が処理している期間だけでなく、処理が開始される前にリクエストがキュー151又はキュー141に格納されている期間も、受付セッションID格納部160に対応するセッション識別情報が格納されていることとなる。
ここで、実施例1の場合と比較すると、実施例1におけるセッションタイムアウト監視部154は、まず、セッションタイムアウトを検出したセッションに対して「セッションに関連する処理が行われていないかどうか」を判定する(第1の判定)。そして、抽出したセッションに対して、対応するリクエストがキュー151又はキュー141に格納されているか否かについて判定を行う(第2の判定)。すなわち、実施例1では、セッションタイムアウトを検出したセッションに対して、さらに2段階の判定を行っていた。
しかし、実施例2では、セッションタイムアウト監視部154は、セッションタイムアウトの監視処理を行う際にセッションタイムアウトを検出したセッションに対応するセッション識別情報が受付セッションID格納部160に格納されているか否かを確認するだけでよい。そのため、実施例2では、受付セッションID格納部160を設けることで、実行待ちのリクエストも考慮したセッションタイムアウトによるセッションの無効化制御をより容易に行うことができる。
[リクエストを処理する順序について]
図6は、キューに格納されたリクエストを処理する順序とセッション格納領域との関係の一例を説明する図である。図6では、説明に必要な構成要素のみが図示されている。
図6は、キューに格納されたリクエストを処理する順序とセッション格納領域との関係の一例を説明する図である。図6では、説明に必要な構成要素のみが図示されている。
図6(A)では、リクエスト処理部152で処理待ちとなっているリクエストがキュー151に格納されている様子を示した図である。図6(A)の例では、白い丸は処理時間の長いセッションのリクエストを表し、斜線が付された丸は処理時間の短いセッションのリクエストを表す。ここで、「処理時間の長いセッションのリクエスト」とは、例えば、新規セッションを開始するリクエストのように、セッションを終了するまでに要する時間が長いと予想されるリクエストを意味する。また、「処理時間の短いセッションのリクエスト」とは、セッションに関連したリクエストの処理がすぐに終了することが見込めるリクエストを意味する。
図6(B)は、キュー151に格納された順に従って、リクエスト処理部152がリクエストを処理した場合の例を示した図である。図6(B)の中央の矢印の左側がリクエストを処理する前の状態を表し、矢印の右側が数十秒経過して白丸のリクエストの1つを処理中となっている状態を表したものである。また、図6(B)では、キュー151の下に、数十秒の時間が経過する前後のセッション格納部153の格納領域の様子の変化を示している。
図6(B)の左側では、説明の便宜上、セッション格納部153の格納領域に、セッション格納済領域Bの他に、1つの新たなセッションを作成できる領域(白い部分)が残っているものとする。この状態で数十秒経過して、キュー151の先頭の最も古い時点で受信したリクエストの処理を1つ開始し、そのリクエストの処理を継続中の状態を図6(B)の右側に示す。この場合、新たに作成されたセッションによって、セッション格納部153の格納領域は全てセッション格納済領域B’で占められ、セッション格納部153の格納領域に空きが無い状態となっている。そのため、後続する新たなセッションを開始するリクエストの処理を実行できず、関連する処理の実行が完了したセッションの情報がセッション格納領域B’から削除されるまで、キュー151に格納したリクエストの処理が待たされ続けることになる。
図6(C)は、図6(A)のキュー151に格納されたリクエストの順番を入れ替えて、処理時間の短いセッションのリクエストから順に処理させた場合の例を示した図である。図6(C)の左側の状態では、例えばセッション終了要求に関するリクエストをキュー151の最初に2つ配置するように、リクエストの順番を入れ替えたものとする。この場合、数十秒経過して図6(C)の右側の状態になると、先頭の2つのセッション終了リクエストの処理が完了している。そのため、セッション格納部153の格納領域は、セッション格納領域C’の領域の他に、図6(C)の左側の状態に比べてさらなる空き領域(白い部分)ができていることが分かる。そのため、キュー151に格納されている2つ目の白丸のリクエストまで、すなわち、キュー151の先頭から3つ分のリクエストを続けてリクエスト処理部152に処理させることが可能となる。
このように、キュー151に格納された実行待ち状態となっているリクエストの順序を入れ替えることができる場合には、リクエストの実行順序を入れ替えることで、より多くのリクエストを処理することが可能となる。つまり、実行待ち状態のリクエストがキュー151に多く溜まっている状況におけるアプリケーションサーバ150の処理のスループットを向上させることが可能となる。
ところで、リクエストにも種類があり、順序を入れ替えてはいけないリクエストと、順序を入れ替えても良いリクエストとがある。順序を入れ替えてはいけないリクエストとしては、例えば、人がクライアント装置30を用いてチケット予約をする場合のように、入力される情報や処理を順に処理する必要があるリクエストがある。また、電子機器から送信されたリクエストの中にも、順に処理を実行しなければならないリクエストも存在し得る。このような順序保証をしなければならないリクエストについては、リクエストを実行する順番の追い越しをしてはならない。
一方、順序を入れ替えても良いリクエストとしては、例えば、ネットワークに接続された家電機器等のクライアント装置30から各家電機器の状態を定期的にサーバに通知するためのステータスレポートを送信するリクエストがある。家電機器等から送信されたステータスレポートを送信するリクエスト等については、リクエストを処理する順序を入れ替えても良く、また、処理内容も人の操作に基づく処理に比べて短時間に終了するものが多い。
このように、リクエストにも、実行順序を入れ替えても良いリクエストと、実行順序を入れ替えてはいけないリクエストとがある。また、リクエストによって処理時間が長くかかるものと、短いものとがある。そのため、リクエストの種別を判定し、順序を入れ替えても良いリクエストについては、各リクエストの処理時間に応じてリクエストの順序を入れ替えることが望ましい。図7を用いて、リクエストの順序を入れ替える制御を行うキューイング処理部の一例について説明する。
図7は、実施例2に係るキューイング処理部の一例を説明する図である。キューイング処理部170は、図3や図5に示されたキュー151又はキュー141の具体的な実施態様の一例である。キューイング処理部170は、順序保証キュー171と、順序可変キュー172と、リクエスト種別判定部173と、キュー読出制御部174とを有する。
順序保証キュー171は、実行順序を入れ替えてはいけないリクエストを一時的に格納するためのキューである。一方、順序可変キュー172は、実行順序を入れ替えても良いリクエストを一時的に格納するためのキューである。リクエスト種別判定部173は、受信したリクエストの種別を判定し、受信したリクエストを順序保証キュー171と順序可変キュー172のいずれのキューに格納するかを決定する。キュー読出制御部174は、順序保証キュー171及び順序可変キュー172のそれぞれから、所定の方法でリクエストを読み出して出力する。
図7の例では、リクエストを順序保証キュー171と順序可変キュー172に分けて格納することで、キューに格納されたリクエストの順序制御を容易に行うことが可能となる。具体的には、順序保証キュー171に格納したリクエストについては、リクエストを格納した順に取り出すことで容易に順序保証を行うことができる。また、順序可変キュー172に格納したリクエストについては、リクエストを受信した順序に関係なく、後述するような所定の条件で読み出すリクエストの読出し順序を決定することができる。
順序保証キュー171と順序可変キュー172のキューの数については、それぞれ1個ずつにする必要はなく、それぞれ複数個のキューにしてもよい。例えば、順序保証キュー171と順序可変キュー172のそれぞれについて、異なる優先順位を設定した複数のキューを設けてもよいし、格納するリクエストの処理内容やアプリケーションの内容に応じた複数のキューを設けてもよい。
キューイング処理部170は、ウェブサーバ140のキュー141に実装するようにしてもよい。特に、アプリケーション処理を実行するサーバ100を複数用いる場合等において、キューイング処理部170を、ウェブサーバ140のキュー141に実装し、サーバ100の数分だけ複数の順序保証キュー171と順序可変キュー172を設けてもよい。
順序保証をする必要があるリクエストについて、異なるクライアント装置30から送信されたリクエストや、異なるアプリケーションによって処理されるリクエストの間では順序保証をする必要がない場合が多い。そのため、順序保証キュー171を複数設けるようにすることで、複数の順序保証すべきリクエストのグループを並列的に扱うことが可能となる。
リクエスト種別判定部173は、受信したリクエストが要求する処理の内容に応じて、受信したリクエストの種別が実行順序を入れ替えても良い種別のリクエストであるか、あるいは、実行順序を入れ替えてはいけない種別のリクエストであるのかを判定する。便宜上、実行順序を入れ替えても良い種別のリクエストを「順序可変リクエスト」と称し、実行順序を入れ替えてはいけない種別のリクエストを「順序保証リクエスト」と称する。リクエストの種別の判定方法としては、以下に述べる複数の観点のいずれか、あるいはその組み合わせによって判定することができる。
(1)リクエストの処理の内容に基づく判定方法
受信したリクエストの処理の内容がセッション開始要求やセッション終了要求である場合には、リクエストの実行順序を保証する必要がないため、受信したリクエストは順序可変リクエストと判定される。
受信したリクエストの処理の内容がセッション開始要求やセッション終了要求である場合には、リクエストの実行順序を保証する必要がないため、受信したリクエストは順序可変リクエストと判定される。
また、受信したリクエストによって要求された処理内容に順序保証を要しないものが含まれることが既知であれば、予め順序保証すべきリクエストの内容をテーブルとして保持しておき、テーブルと比較することで、リクエストの種別を判定することもできる。リクエストに含まれる情報には、例えば、URLの末尾に操作内容を記載した情報が含まれる場合がある(例:http://xxx/yyy/zzz/operation1)。このような場合URLの末尾の「operation1」の内容を確認することで要求された処理の内容を判定することができ、処理の内容に基づく順序保証の要否を判定できる。
(2)リクエストを実行するアプリケーションの種類に基づく判定方法
リクエストを処理するアプリケーションの種類によって、リクエストの順序保証の要否を判定できる場合もある。例えば、チケット予約等のサービスを提供するアプリケーションに対する処理を要求するリクエストであれば、順序保証が必要なリクエストと予想することができる。一方、テレビ番組の人気投票の集計アプリケーションが処理するリクエストについては、データ収集さえできれば良いので、リクエストの順序保証は不要なリクエストであると予想することができる。このように、リクエストを処理するアプリケーションの種類に応じて、リクエストの順序保証の要否を判定できる。
リクエストを処理するアプリケーションの種類によって、リクエストの順序保証の要否を判定できる場合もある。例えば、チケット予約等のサービスを提供するアプリケーションに対する処理を要求するリクエストであれば、順序保証が必要なリクエストと予想することができる。一方、テレビ番組の人気投票の集計アプリケーションが処理するリクエストについては、データ収集さえできれば良いので、リクエストの順序保証は不要なリクエストであると予想することができる。このように、リクエストを処理するアプリケーションの種類に応じて、リクエストの順序保証の要否を判定できる。
(3)リクエストを送信したクライアント装置の種類に基づく判定方法
リクエストを送信したクライアント装置30の種類から、受信したリクエストが順序可変リクエストか否かを判定できる場合もある。例えば、リクエストを送信したクライアント装置30が、センサによって取得したデータを定期的にサーバに送る装置であるような場合には、データを受け取る順序はサーバ100で実行されるデータを収集するアプリケーションの処理に影響しない。このような場合、リクエストを送信するクライアント装置30の種類、あるいは固有の識別情報に基づいて、受信したリクエストが順序可変リクエストであると判定することができる。クライアント装置30の識別情報としては、例えば、クライアント装置30のIPアドレス等の識別情報や、クライアント装置30の属性を示す情報がリクエストに含まれる場合には、その属性情報を用いてもよい。
リクエストを送信したクライアント装置30の種類から、受信したリクエストが順序可変リクエストか否かを判定できる場合もある。例えば、リクエストを送信したクライアント装置30が、センサによって取得したデータを定期的にサーバに送る装置であるような場合には、データを受け取る順序はサーバ100で実行されるデータを収集するアプリケーションの処理に影響しない。このような場合、リクエストを送信するクライアント装置30の種類、あるいは固有の識別情報に基づいて、受信したリクエストが順序可変リクエストであると判定することができる。クライアント装置30の識別情報としては、例えば、クライアント装置30のIPアドレス等の識別情報や、クライアント装置30の属性を示す情報がリクエストに含まれる場合には、その属性情報を用いてもよい。
(4)リクエストに含まれる制御情報に基づく判定方法
リクエストによっては、リクエストに含まれる情報の中に順序保証をする必要があるか否かを示す制御情報を含む場合もある。そのようなリクエストについては、リクエストに含まれる制御情報に基づいて、受信したリクエストの順序保証の要否を判定することもできる。
リクエストによっては、リクエストに含まれる情報の中に順序保証をする必要があるか否かを示す制御情報を含む場合もある。そのようなリクエストについては、リクエストに含まれる制御情報に基づいて、受信したリクエストの順序保証の要否を判定することもできる。
キュー読出制御部174は、順序保証キュー171からは、入力された順にリクエストを読み出す。また、キュー読出制御部174は、順序可変キュー172からは、所定の条件に基づいて決定した順序に基づいてリクエストの読出しを行う。キュー読出制御部174の処理の詳細については、図9、図15を用いて後述する。
[クライアント装置の種別に応じたセッションタイムアウト値の設定]
図8は、クライアント装置の種別に応じたセッションタイムアウト値の設定を説明する図である。
図8は、クライアント装置の種別に応じたセッションタイムアウト値の設定を説明する図である。
従来のアプリケーションサーバでは、アプリケーションの種別に応じてセッションタイムアウト時間が設定されていた。例えば、チケット販売アプリケーションや、企業内の勤怠管理アプリケーション等、人の操作に応じて処理を行うアプリケーションについては、その処理内容に応じて、20分、1時間といった異なるセッションタイムアウト時間が設定されていた。
しかし、IoT技術の普及に伴って様々なクライアント装置がアプリケーションサーバと更新する場面においては、1つのアプリケーションに対して様々な種類のクライアント装置がリクエストを送信することもあり得る。例えば、同じアプリケーションに対して、人が入力した情報に基づくリクエストと、電子機器の処理に基づくリクエストとが送信される場合がある。この場合、人の操作に対しては、操作途中にセッションタイムアウトが発生しないよう、十分長いタイムアウト時間とする必要がある。一方、電子機器等のモノ(機械)の場合、機械的にリクエストに関連する処理が行われるため、タイムアウト時間は短くても問題ない。むしろ、電子機器等について発生する異常としては、機器の故障やネットワーク切断等に起因する場合が多いため、異常の早期発見のためにもセッションタイムアウト値は短い方が望ましい。
また、同じ種類のクライアント装置でも、性能の低い10年前の装置と最新式の装置とでは、処理を行うスピードが全く異なる。そのため、リクエストを送信する機器の種類が同じであったとしても、リクエストを送信した機器の型番によってセッションタイムアウト時間を適切な値に設定することが望ましい場合もある。
このような状況に対応するために、本実施例では、リクエストの処理を実行するアプリケーションの種類だけでなく、リクエストを送信したクライアント装置の種別も踏まえて、各セッションのそれぞれに応じたセッションタイムアウト時間を設定する。タイムアウト時間管理テーブル180は、アプリケーション種別及びクライアント装置の種別に基づいて異なるセッションタイムアウト時間を設定した場合のセッションタイムアウト時間管理テーブルの一例である。
アプリケーション種別やクライアント装置の種別に基づいて、セッション毎に適切なセッションタイムアウト時間を設定することで、処理が実行されない状態のセッションに関するセッション格納領域より早い段階でタイムアウトによって解放することが可能となる。
図8の例において、クライアント識別情報が「CID11」で始まる識別情報に対応するクライアント装置30は、インターネット家電等の電子機器であるものとする。また、クライアント識別情報が「CID22」で始まる識別情報に対応するクライアント装置30は、ユーザが操作する端末装置となっているクライアント装置であるものとする。
タイムアウト時間管理テーブル180に示す例では、アプリケーション1に対してリクエストを送信する新型のクライアント装置(クライアント識別情報:CID1151、CID1152)については、タイムアウト時間は10秒に設定される。一方、同じアプリケーション1に対してリクエストを送信する旧型のクライアント装置(クライアント識別情報:CID1181)については、タイムアウト時間は2分に設定される。また、アプリケーション2に対してリクエストを送信するユーザが操作するクライアント装置1(クライアント識別情報:CID2201)のタイムアウト時間は10分に設定され、ユーザが操作する他のクライアント装置2(クライアント識別情報:CID2202)のタイムアウト時間は30分に設定される。
アプリケーションの種別とクライアント装置の種別の両方の情報に基づいて異なるセッションタイムアウト時間を設定する場合、セッションタイムアウト時間は、セッションごとに管理することが望ましい。そのため、本実施例では、多数のクライアント装置との間で確立された複数のセッションごとに適切なセッション管理を行うために、図9に示すようなセッション管理テーブル190を用いてセッションの管理を行う。
なお、上述の説明ではアプリケーションの種別とクライアント装置の種別の両方の情報に基づいて異なるセッションタイムアウト時間を設定する例を説明したが、クライアント装置の種別のみに応じてセッションタイムアウト時間を設定するようにしてもよい。また、アプリケーションの種類のみに応じてセッションタイムアウト時間を設定する態様も本実施例に含まれる。
[セッション管理テーブル]
図9は、セッション管理テーブルの一例を説明する図である。セッション管理テーブル190は、各セッションの情報とともにセッション格納部153の記憶領域に格納してもよいし、セッション格納部153とは別にメモリ103中に割り当てた領域に格納しても良い。セッション管理テーブル190は、セッションID、アプリケーションID、クライアントID、各セッションのタイムアウト監視開始時刻の情報、セッションタイムアウト時間、順序入替制御フラグ、セッション予測処理時間の情報を含む。
図9は、セッション管理テーブルの一例を説明する図である。セッション管理テーブル190は、各セッションの情報とともにセッション格納部153の記憶領域に格納してもよいし、セッション格納部153とは別にメモリ103中に割り当てた領域に格納しても良い。セッション管理テーブル190は、セッションID、アプリケーションID、クライアントID、各セッションのタイムアウト監視開始時刻の情報、セッションタイムアウト時間、順序入替制御フラグ、セッション予測処理時間の情報を含む。
セッションIDは、各セッションを識別するための識別情報であり、この識別情報と同じ情報が、対応するリクエストに関連付けて受付セッションID格納部160にも格納される。アプリケーションIDは、リクエストで要求された処理を行うアプリケーションの識別情報である。クライアントIDは、リクエストを送信するクライアント装置の識別情報である。例えば、クライアントIDが「CID11xx」(xは任意の文字列)で始まる場合には、電子機器であることを示し、クライアントIDが「CID22xx」で始まる場合には、ユーザ端末であることを示すといったネーミングルールとすることもできる。そのようなネーミングルールにすることで、容易にクライアント装置の種別を識別でき、セッションタイムアウト時間等の設定を容易に行うことが可能となる。図9の「タイムアウト時間」は複数のセッションのそれぞれに対して設定されたセッションタイムアウト時間を示す。
順序入替制御フラグが「1」の場合、セッションに関するリクエストの実行順序を入れ替えても良いことを示す。順序入替制御フラグが「0」の場合、セッションに関するリクエストの実行順序を入れ替えできないことを示す。
セッション予測処理時間は、各セッションについての処理を完了させるための予測処理時間を示したものである。このセッション予測処理時間は、同じアプリケーションIDとクライアントIDの組み合わせを有する過去のセッションの実行時間の履歴や、セッションに係るリクエストに含まれる処理の内容等に基づいて定めることができる。
具体的には、処理の操作名を含むURL(例:http://xxx/yyy/zzz/operation1)がリクエスト含まれる場合、セッション予測処理時間は、その処理(operation1)のリクエストが送信された回数や、リクエストが送信された時間間隔等の情報等を用いて推測できる。リクエストが送信された時間間隔については、例えば、同じセッションについて複数回送信されたリクエストのタイムアウト監視開始時刻の差分から推測してもよい。また、リクエストで要求される処理の内容によっても処理時間が異なるので、リクエストに含まれる処理(operation-x)の内容と過去に同じ処理が行われた際の処理時間とを比較して、予測処理時間を推測しても良い。リクエストがセッション終了要求などの場合には、セッション予測処理時間を最も短い時間、例えば0.01秒や0秒に設定することもできる。
セッション管理テーブル190に記録された情報の内、セッションID、タイムアウト監視開始時刻とタイムアウト時間は、セッションタイムアウト監視部154による定期的なセッションタイムアウトの監視処理で使用される。また、セッションID、順序入替制御フラグ、及びセッション予測処理時間は、キュー読出制御部174によるキューからのリクエストの読出し制御で使用される。これらの詳細については、図14、図15を用いて後述する。
[フローチャート]
次に、図10を参照しながら、サーバ100による情報処理方法について説明する。図10は、(A)ウェブサーバ処理、及び(B)アプリケーションサーバ処理の一例を示すフローチャートである。
次に、図10を参照しながら、サーバ100による情報処理方法について説明する。図10は、(A)ウェブサーバ処理、及び(B)アプリケーションサーバ処理の一例を示すフローチャートである。
ウェブサーバ140は、クライアント装置30からのリクエストを受信する。ウェブサーバ140は、クライアント装置30からのリクエストを受信するまで待ち続ける(S101でNo)。ウェブサーバ140は、クライアント装置30からのリクエストを受信した場合(S101でYes)、受付セッションID書き込み処理を行う(S102)。
図11は、図10における受付セッションID書き込み処理(S102)の一例を示すフローチャートである。ウェブサーバ140がクライアント装置30からリクエストを受信すると、受付セッションID書込み部142は、受信したリクエストに対応するセッションが新規セッションかどうかを判断する(S121)。具体的には、受付セッションID書込み部142は、受信したリクエストにセッション情報が含まれていない場合に、受信したリクエストに対するセッションは新規セッションであると判断する。また、受付セッションID書込み部142は、受信したリクエストがセッション開始リクエストである場合にも新規セッションと判断する。
受信したリクエストに対応するセッションが新規セッションである場合(S121でYes)、リクエストに対応するセッションの識別情報がまだないため、受付セッションID書込み部142は、受付セッションID書込み処理を終了する。一方、受信したリクエストに対応するセッションが新規セッションでない場合(S121でNo)、受付セッションID書込み部142は、リクエストに含まれるセッション識別情報を、受付セッションID格納部160に、リクエストに関連付けて格納し(S122)、受付セッションID書込み処理を終了する。図10のS102の受付セッションID書込み処理が完了すると、ウェブサーバ140は、受信したリクエストをアプリケーションサーバ150に送信する(S103)。
アプリケーションサーバ150は、ウェブサーバ140からのリクエストを受信するまで待ち続け(S111でNo)、ウェブサーバ140からのリクエストを受信した場合(S111でYes)、アプリケーション処理の呼出しを行う(S112)。
図12は、図10におけるアプリケーション処理(S112)の一例を示すフローチャートである。アプリケーションサーバ150のリクエスト処理部152は、ウェブサーバ140からリクエストを受信すると、受信したリクエストに対応するセッションが作成済みであるかどうかを判定する(S141)。その際、受信したリクエストに対応するセッション識別情報が無い場合や、リクエストがセッション開始リクエストである場合、リクエスト処理部152は、対応するセッションが作成済みではないと判断する(S141でNo)。セッションが作成済みでない場合(S141でNo)、リクエスト処理部152は、リクエストに対応するセッションを作成し(S142)、作成したセッションに関連する情報をセッション格納部153やセッション管理テーブル190に格納する。
セッションが作成済みである場合(S141でYes)や、S142でセッションを作成した後、リクエスト処理部152は、リクエストで要求された処理を実行する(S143)。リクエストで要求された処理には、クライアント装置から要求されるアプリケーションの処理だけでなく、セッション開始要求に関連する処理やセッション終了要求に関連する処理も含まれる。
リクエストがセッション終了要求である場合には(S144でYes)、リクエスト処理部152は、セッション格納部153やセッション管理テーブル190に格納された対応するセッションの情報を削除する(S145)。リクエストがセッション終了要求ではない場合(S144でNo)、図12の処理を終了する。なお、S145によるセッション削除処理を行う際、一部の情報については履歴情報として、履歴情報を記録するための記憶領域に記憶するようにしてもよい。後に、セッション管理テーブル190のセッション予測処理時間の予測に使用するためである。
図12のアプリケーション処理が終了すると、アプリケーションサーバ150は、アプリケーション処理の実行結果をウェブサーバに応答する(図10のS113)。ウェブサーバ140が、アプリケーションサーバ150からリクエストの実行結果を受信すると(S104)、受付セッションID削除処理を行う(S105)。
図13は、受付セッションID削除部143によって実行される図10の受付セッションID削除処理(S105)の一例を示すフローチャートである。アプリケーションサーバ150で処理されたリクエストが新規リクエストである場合(S131でYes)、受付セッションID格納部160には対応するセッション識別情報は格納されていないので、処理を終了する。一方、アプリケーションサーバ150で処理されたリクエストが新規リクエストでない場合(S131でNo)、受付セッションID削除部143が、リクエストに対応するセッションの識別情報を受付セッションID格納部から削除し(S132)、受付セッションID削除処理を終了する。
受付セッション削除処理(S105)が終了すると、ウェブサーバ140は、アプリケーションサーバ150から受信した実行結果を、クライアント装置30に、リクエストに対する応答として送信する(S106)。こうして1つのリクエストに関するウェブサーバ処理及びアプリケーションサーバ処理が実行される。アプリケーションサーバ150では、受信したリクエストに関する処理と並行して、セッションのタイムアウト監視処理を行う(S114)。
図14は、図10のセッションタイムアウト監視処理(S114)の一例を示すフローチャートである。セッションタイムアウト監視部154は、定期的にセッション格納部153に格納されたセッション情報に対応する全てのセッションについて(S151〜S157のループ)、セッションタイムアウトとなっているか否かを判定する。
まず、セッションタイムアウト監視部154は、セッション格納部153に格納されたセッション情報に対応するセッションの中から順に1つセッションを選択する(S151)。次に、セッションタイムアウト監視部154は、選択したセッションに対応するセッションのタイムアウト監視開始時刻の情報と、セッションタイムアウト時間の情報とをセッション管理テーブル190から取得する(S152)。
セッションタイムアウト監視部154は、S152で取得したタイムアウト監視開始時刻と現在時刻とに基づいて、タイムアウト監視開始時刻からの経過時間を算出する(S153)。算出した経過時間がS152で取得したセッションタイムアウト時間を超過していなければ(S154でNo)、セッションタイムアウトをしていないことになるので、S157の処理に進む。算出した経過時間がS152で取得したセッションタイムアウト時間を超過している場合には(S154でYes)、セッションタイムアウトしていることになるので、S155の処理に進む。
S155では、セッションタイムアウト監視部154は、セッションタイムアウトしているセッションに対応するセッション識別情報が受付セッションID格納部160に格納されているかどうかを判定する。対応するセッション識別情報が受付セッションID格納部160に格納されている場合(S155でYes)、すでにセッションに対応したリクエストを受信済みであるのでセッションタイムアウトに起因するセッションの無効化はせずにS157に進む。
一方、S155の判定において、対応するセッション識別情報が受付セッションID格納部160に格納されていない場合(S155でNo)、セッションタイムアウト監視部154は、該当するセッションを無効化(破棄)する処理を行う(S156)。S156の処理では、セッションタイムアウト監視部154は、セッション格納部153、セッション管理テーブル190、及び受付セッションID格納部160に格納された該当するセッションに関する情報を削除する。
本実施例では、セッションタイムアウト監視部154が各セッションのタイムアウトの監視を行う際に、セッションタイムアウト時間の経過だけでなく受付セッションID格納部160に格納対応するセッション識別情報が格納されているかどうかを判定する。このようにすることで、タイムアウト時間を経過したセッションであっても、関連したリクエストが既に受信されている場合や関連したリクエストを実行中の場合にセッションタイムアウトに起因するセッションの無効化(破棄)を抑止することが可能となる。
S157において、全てのセッションについてセッションタイムアウトの判定が完了した場合には処理を終了し、セッションタイムアウトの判定がまだのセッションがある場合、S151に戻って次のセッションを選択してS152〜S156の処理を行う。図14のセッションタイムアウト監視処理が完了すると、図10のS115の処理に進み、一定時間が経過するのを待つ。そして、再度S114に進んで定期的なセッションタイムアウト監視処理を行う。
図10のS114、S115及び図14の処理では、セッションタイムアウト監視部154による定期的なセッションタイムアウト監視処理について説明した。しかし、セッションタイムアウト監視部154によるセッションタイムアウト監視処理は、定期的な監視処理に限られず、管理サーバ130からの要求があった場合やその他の特定のタイミングで行うようにしても良い。
図15は、キュー読出し制御処理の一例を示すフローチャートである。図7に示されるキューイング制御部170のキュー読出制御部174は、順序保証キュー171及び順序可変キュー172に格納されたリクエストの読出し処理を図15のフローに沿って行う。前述の通り、キューイング処理部170は、図3や図5に示されたキュー151やキュー141の具体的な一実施態様として実装できるが、ここでは説明の便宜上、アプリケーションサーバ150内のキュー151に実装する場合を例に説明する。
順序保証キュー171、順序可変キュー172は、アプリケーションサーバ150のリクエスト処理部152が処理を開始できるようになるまでの間、リクエストを保持するものである。そのため、キュー読出制御部174は、リクエスト処理部152が次のリクエストを処理できない期間は(S161でNo)、順序保証キュー171、順序可変キュー172からのリクエストの読出しを行わずに待機する。ここで、リクエスト処理部152が次のリクエストを処理できる状態になったか否かの判定(S161)は、キュー読出制御部174がリクエスト処理部152の実行状態を監視するようにしてもよいし、リクエスト処理部152からの要求を待つようにしてもよい。
リクエスト処理部152が次のリクエストを処理できるようになった場合(S161でYes)、キュー読出制御部174は、リクエストを読み出すキューを決定する(S162)。
キュー読出制御部174が、順序保証キュー171と順序可変キュー172のいずれから読み出すのかを決定する方法として、例えば、以下の方法のいずれか、またはそれらを組み合わせて用いることができる。
(1)2つのキューから交互に読み出す方法
順序保証キュー171と順序可変キュー172が1つずつの場合には、キュー読出制御部174がリクエスト処理部152にリクエストを出力するにあたって、それぞれのキューから交互にリクエストを読み出すようにすることができる。また、複数の順序保証キュー171と複数の順序可変キュー172がある場合には、読み出すキューをラウンド・ロビン方式等のルールに基づいて決定することもできる。
順序保証キュー171と順序可変キュー172が1つずつの場合には、キュー読出制御部174がリクエスト処理部152にリクエストを出力するにあたって、それぞれのキューから交互にリクエストを読み出すようにすることができる。また、複数の順序保証キュー171と複数の順序可変キュー172がある場合には、読み出すキューをラウンド・ロビン方式等のルールに基づいて決定することもできる。
(2)それぞれのキューに格納されたリクエストの数で決定する方法
順序保証キュー171と順序可変キュー172のそれぞれに格納されたリクエストの数に対応した配分に沿って、順序保証キュー171と順序可変キュー172のどちらからリクエストを読み出すかを決定してもよい。各キュー171、172が複数存在する場合にも、それぞれのキューに格納されたリクエスト数の配分に応じて読み出すキューを決定してもよい。
順序保証キュー171と順序可変キュー172のそれぞれに格納されたリクエストの数に対応した配分に沿って、順序保証キュー171と順序可変キュー172のどちらからリクエストを読み出すかを決定してもよい。各キュー171、172が複数存在する場合にも、それぞれのキューに格納されたリクエスト数の配分に応じて読み出すキューを決定してもよい。
(3)人の操作によるリクエストと、機器からのリクエストの違いに応じて決定する方法
人の操作によるリクエストの場合、リクエストの処理が遅れると操作している人が待たされることになる。そのため、順序保証キュー171、順序可変キュー172のそれぞれに対してさらに人の操作によるリクエストを格納するキューと、機器(人の操作によらない電子機器)から受信したリクエストを格納するキューを設け、人の操作によるリクエストが格納されているキューから優先的にリクエストを読み出すことも考えられる。
人の操作によるリクエストの場合、リクエストの処理が遅れると操作している人が待たされることになる。そのため、順序保証キュー171、順序可変キュー172のそれぞれに対してさらに人の操作によるリクエストを格納するキューと、機器(人の操作によらない電子機器)から受信したリクエストを格納するキューを設け、人の操作によるリクエストが格納されているキューから優先的にリクエストを読み出すことも考えられる。
(4)セッション格納部153の記憶領域の残量に応じて決定する方法
セッション格納部153の記憶領域の残量がある閾値以下になった場合に、順序可変キュー172から優先的にリクエストを読み出すようにしてもよい。そのようにすることで、すぐに処理が完了するセッションに関するリクエストを早く処理することができ、セッション情報を記憶するメモリの記憶領域の空き容量をより速い段階で増やすことができるようになるためである。
セッション格納部153の記憶領域の残量がある閾値以下になった場合に、順序可変キュー172から優先的にリクエストを読み出すようにしてもよい。そのようにすることで、すぐに処理が完了するセッションに関するリクエストを早く処理することができ、セッション情報を記憶するメモリの記憶領域の空き容量をより速い段階で増やすことができるようになるためである。
図15のS163では、読出しキュー決定処理(S162)で決定されたキューが順序可変キュー172であるか否かが判定される。読出しキュー決定処理(S162)において順序可変キュー172から読み出すと決定された場合(S163でYes)、S164の処理に進む。S164では、キュー読出制御部174は、順序可変キュー172から入力順とは異なる順序でリクエストを読み出し、読み出したリクエストをリクエスト処理部152に出力する。
読出しキュー決定処理(S162)において順序可変キュー172からのリクエストの読み出しは行わず順序保証キュー171からリクエストを読み出すと決定された場合(S163でNo)、S165の処理に進む。S165では、キュー読出制御部174は、順序保証キュー171に格納された順に、リクエストを読み出し、読み出したリクエストをリクエスト処理部152に出力する。
S164において、順序可変キュー172から入力順とは異なる順序でリクエストを読み出す順序を決定する方法としては、例えば以下のいずれかの方法、あるいはこれらを組み合わせた方法を用いることができる。
(1)セッションの予測処理時間の小さい順にリクエストを読み出す方法
順序可変キュー172に格納されたリクエストのそれぞれに対応するセッションの予測処理時間を比較するにあたり、キュー読出制御部174は、セッション管理テーブル190に格納された対応するセッションの項目からセッション予測処理時間を読み出す。キュー読出制御部174は、読み出した各セッションの予測処理時間をソートし、予測処理時間の最も短いセッションに対応するリクエストを順序可変キュー172から読み出す。
順序可変キュー172に格納されたリクエストのそれぞれに対応するセッションの予測処理時間を比較するにあたり、キュー読出制御部174は、セッション管理テーブル190に格納された対応するセッションの項目からセッション予測処理時間を読み出す。キュー読出制御部174は、読み出した各セッションの予測処理時間をソートし、予測処理時間の最も短いセッションに対応するリクエストを順序可変キュー172から読み出す。
(2)緊急度の高い順にリクエストを読み出す方法
受信したリクエストの内容や、要求された処理を実行するアプリケーションの種類に基づいて、リクエストの緊急度を判定し、緊急度の高いリクエストが含まれている場合には、その緊急度の高いリクエストが早く読み出されるように順序制御しても良い。緊急度の高いリクエストを早く読み出せるように順序制御することで、障害が発生した場合等の緊急のリクエストに迅速に処理して応答できるようになるためである。
受信したリクエストの内容や、要求された処理を実行するアプリケーションの種類に基づいて、リクエストの緊急度を判定し、緊急度の高いリクエストが含まれている場合には、その緊急度の高いリクエストが早く読み出されるように順序制御しても良い。緊急度の高いリクエストを早く読み出せるように順序制御することで、障害が発生した場合等の緊急のリクエストに迅速に処理して応答できるようになるためである。
なお、緊急度の高いリクエストの間接的な判定方法として、過去の履歴から把握できるリクエストの受信頻度が低いリクエストが先に読み出されるように順序制御しても良い。発生頻度の低いリクエストは緊急度の高いリクエストである可能性があるためである。
次に、キュー読出制御部174が順序可変キュー172からリクエストを読み出す制御方法については、例えば以下のいずれかの方法、あるいはこれらを組み合わせた方法により実装することができる。
(1)予め順序可変キュー172のリクエスト格納位置を入れ替える方法
キュー読出制御部174が順序可変キュー172からリクエストを読み出す処理を行う前に、予め順序可変キュー172のリクエスト格納位置を入れ替えておく実装とすることができる。そうすることで、順序可変キュー172からの読出しが決定された場合に(S163でYes)、キュー読出制御部174は、単に順序可変キュー172の先頭からリクエストを読み出せばよく、読み出すべきリクエストをすぐに読み出せるようになる。
キュー読出制御部174が順序可変キュー172からリクエストを読み出す処理を行う前に、予め順序可変キュー172のリクエスト格納位置を入れ替えておく実装とすることができる。そうすることで、順序可変キュー172からの読出しが決定された場合に(S163でYes)、キュー読出制御部174は、単に順序可変キュー172の先頭からリクエストを読み出せばよく、読み出すべきリクエストをすぐに読み出せるようになる。
(2)順序可変キュー172から読み出す際のポインタの並び順を予め決定する方法
順序可変キュー172からのリクエストを読み出す際の他の実装例として、順序可変キュー172からの読出しポインタ(リクエスト格納アドレス)をリクエストに対応する予測処理時間でソートして、ポインタテーブルに格納してもよい。この場合、キュー読出制御部174が順序可変キュー172からリクエストを読み出す場合に、ポインタテーブルの先頭に格納されたポインタを用いてリクエストを読み出すことが可能となる。
順序可変キュー172からのリクエストを読み出す際の他の実装例として、順序可変キュー172からの読出しポインタ(リクエスト格納アドレス)をリクエストに対応する予測処理時間でソートして、ポインタテーブルに格納してもよい。この場合、キュー読出制御部174が順序可変キュー172からリクエストを読み出す場合に、ポインタテーブルの先頭に格納されたポインタを用いてリクエストを読み出すことが可能となる。
(3)リクエスト格納位置の入替制御タイミング
順序可変キュー172のリクエスト格納位置の入替は、順序可変キュー172にリクエストが格納されるタイミング、又は、リクエストを読み出すタイミングで行っても良い。リクエストを順序可変キュー172に格納又は読み出すタイミングで、リクエストの順序を入れ替えることで、最新のリクエスト受信状況に応じた適切な順序でリクエストを読み出すことが可能となるからである。
順序可変キュー172のリクエスト格納位置の入替は、順序可変キュー172にリクエストが格納されるタイミング、又は、リクエストを読み出すタイミングで行っても良い。リクエストを順序可変キュー172に格納又は読み出すタイミングで、リクエストの順序を入れ替えることで、最新のリクエスト受信状況に応じた適切な順序でリクエストを読み出すことが可能となるからである。
また、定期的なタイミングで、リクエストの並び替えを行うようにしても良い。定期的なタイミングでリクエストの並び替えを行うことによって、リクエストの並べ替える順序を判定する処理の負荷を軽減できるからである。
[実施例2の効果]
実施例2では、受付セッションID格納部160を設け、セッションタイムアウトの監視処理を行う際にセッションタイムアウトを検出したセッションに対応する識別情報が受付セッションID格納部160に格納されているか否かを判定する。このようにすることで、実行待ちのリクエストも考慮したセッションタイムアウトによるセッションの無効化制御がより容易に行うことができるようになる。
実施例2では、受付セッションID格納部160を設け、セッションタイムアウトの監視処理を行う際にセッションタイムアウトを検出したセッションに対応する識別情報が受付セッションID格納部160に格納されているか否かを判定する。このようにすることで、実行待ちのリクエストも考慮したセッションタイムアウトによるセッションの無効化制御がより容易に行うことができるようになる。
また、リクエストを格納するキューとして、順序保証キュー171と順序可変キュー172とを設け、順序を保証する必要のないリクエストの読出し順序を入れ替えることで、より効率的にリクエストの処理を実行できるようになる。さらに、実施例2では、アプリケーション種別やクライアント装置の種別に基づいて、セッション毎に適切なセッションタイムアウト時間を設定する。そうすることで、処理が実行されない状態のセッションに関するセッション格納領域を、より早い段階でタイムアウトによって解放することが可能となる。
以上、本発明の好ましい実施例について詳述したが、本発明は特定の実施例に限定されるものではなく、以下のような種々の変形や変更が可能である。
(1)複数のサーバ100を用いた分散処理
1つのウェブサーバ140が受け付けたリクエストを、複数のサーバ100のハードウェア上で実行されるアプリケーションサーバ150を用いて分散処理することも可能である。その際、リクエストの受信数に応じて、使用するサーバ100の台数を動的に変更し、使用していないサーバ100の電源供給を止めておくといった制御を行うこともできる。そのように制御することで、リクエストを処理するために必要となるシステムのスループットを確保しつつ、システムの低消費電力化を図ることができるためである。
1つのウェブサーバ140が受け付けたリクエストを、複数のサーバ100のハードウェア上で実行されるアプリケーションサーバ150を用いて分散処理することも可能である。その際、リクエストの受信数に応じて、使用するサーバ100の台数を動的に変更し、使用していないサーバ100の電源供給を止めておくといった制御を行うこともできる。そのように制御することで、リクエストを処理するために必要となるシステムのスループットを確保しつつ、システムの低消費電力化を図ることができるためである。
(2)アプリケーションサーバをサーブレットコンテナ等で実現
アプリケーションサーバ150の機能を、各サーバ100上で稼働させた仮想マシン環境上で動作するサーブレットコンテナ等で実現することもできる。そのようにすることで、サーバ100のメンテナンス時や低消費電力化のための制御を行う際に、アプリケーションサーバ150の処理を他のサーバ100にライブマイグレーションによって移動させることが可能となる。
アプリケーションサーバ150の機能を、各サーバ100上で稼働させた仮想マシン環境上で動作するサーブレットコンテナ等で実現することもできる。そのようにすることで、サーバ100のメンテナンス時や低消費電力化のための制御を行う際に、アプリケーションサーバ150の処理を他のサーバ100にライブマイグレーションによって移動させることが可能となる。
(3)セッション格納部153のセッション格納領域の分割
セッションの情報を格納するセッション格納部153の格納領域を、順序保証をするリクエストや人の操作によるリクエストに関連するセッション用の領域と、他のリクエストに関連するセッション用の領域とに分割するようにしてもよい。そのようにすることで、順序保証をしなくてもよい電子機器からのリクエストを一時期に大量に受信した場合等においても、順序保証をする必要のあるリクエストや人の操作によるリクエストにそれまでと同様に処理することが可能となる。
セッションの情報を格納するセッション格納部153の格納領域を、順序保証をするリクエストや人の操作によるリクエストに関連するセッション用の領域と、他のリクエストに関連するセッション用の領域とに分割するようにしてもよい。そのようにすることで、順序保証をしなくてもよい電子機器からのリクエストを一時期に大量に受信した場合等においても、順序保証をする必要のあるリクエストや人の操作によるリクエストにそれまでと同様に処理することが可能となる。
(4)その他
前述したクライアント装置30から受信したリクエストを処理するウェブサーバ140やアプリケーションサーバ150の処理を実行させるプログラムをコンピュータ読み取り可能な記録媒体に記憶しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクにはHDDなどが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWなどが含まれる。
前述したクライアント装置30から受信したリクエストを処理するウェブサーバ140やアプリケーションサーバ150の処理を実行させるプログラムをコンピュータ読み取り可能な記録媒体に記憶しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクにはHDDなどが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWなどが含まれる。
なお、本発明に係るプログラムの流通は、前記記録媒体による流通したものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送され、HDD等の記録媒体に格納されて使用されるものも含まれる。
10:情報処理システム
20:ネットワーク
30:クライアント装置
100、100−1〜100−N:サーバ
101、101A、101B、101C、101D:CPU
102:入出力装置インタフェース回路
103:メモリ
104:ネットワークインタフェース回路
105:DBサーバインタフェース回路
106:ローカルバスインタフェース回路
107:ハードディスクドライブ
108:内部バス
110:DBサーバ
120:ネットワークSW
130:管理サーバ
131:ローカルバス
140:ウェブサーバ
141:キュー
142:受付セッションID書込み部
143:受付セッションID削除部
150:アプリケーションサーバ
151:キュー
152:リクエスト処理部
153:セッション格納部
154:セッションタイムアウト監視部
160:受付セッションID格納部
170:キューイング処理部
171:順序保証キュー
172:順序可変キュー
173:リクエスト種別判定部
174:キュー読出制御部
180:タイムアウト時間管理テーブル
190:セッション管理テーブル
20:ネットワーク
30:クライアント装置
100、100−1〜100−N:サーバ
101、101A、101B、101C、101D:CPU
102:入出力装置インタフェース回路
103:メモリ
104:ネットワークインタフェース回路
105:DBサーバインタフェース回路
106:ローカルバスインタフェース回路
107:ハードディスクドライブ
108:内部バス
110:DBサーバ
120:ネットワークSW
130:管理サーバ
131:ローカルバス
140:ウェブサーバ
141:キュー
142:受付セッションID書込み部
143:受付セッションID削除部
150:アプリケーションサーバ
151:キュー
152:リクエスト処理部
153:セッション格納部
154:セッションタイムアウト監視部
160:受付セッションID格納部
170:キューイング処理部
171:順序保証キュー
172:順序可変キュー
173:リクエスト種別判定部
174:キュー読出制御部
180:タイムアウト時間管理テーブル
190:セッション管理テーブル
Claims (10)
- 複数のクライアント装置からのリクエストを受信するリクエスト受付部と、
前記複数のクライアント装置と通信を行うために確立された複数のセッションの情報を記憶するセッション情報記憶部と、
前記リクエスト受付部が受信した複数のリクエストのうち、処理が開始されないリクエストを一時的に記憶するリクエスト記憶部と、
前記セッション情報記憶部にセッションの情報が記憶された複数のセッションのうち、セッションに対応するリクエストの処理が実行されていない状態で経過した経過時間が予め定められたタイムアウト時間を経過したセッションを検出するタイムアウト検出部と、
前記タイムアウト検出部によって前記経過時間が前記タイムアウト時間を経過したと検出されたセッションについて、当該セッションに対応するクライアント装置から受信したリクエストが前記リクエスト記憶部に格納されていることに応じて、前記タイムアウト時間の経過に起因する当該セッションの無効化を抑止する制御部と、
を備えることを特徴とする情報処理システム。
- 前記制御部は、前記タイムアウト検出部によって前記経過時間が前記タイムアウト時間を経過したと検出されたセッションについて、当該セッションに対応するクライアント装置から受信したリクエストが前記リクエスト記憶部に格納されていない場合、当該セッションの無効化を行う、
ことを特徴とする請求項1記載の情報処理システム。
- 受信したリクエストの処理が完了するまでの間、該リクエストに対応するセッションの識別情報を記憶する識別情報記憶部をさらに備え、
前記リクエスト受付部は、前記クライアント装置からのリクエストを受信すると、受信したリクエストに対応するセッションの識別情報を前記受信したリクエストに関連付けて前記識別情報記憶部に格納し、
前記制御部は、前記タイムアウト検出部によって前記経過時間が前記タイムアウト時間を経過したと検出されたセッションについて、当該セッションの識別情報が前記識別情報記憶部に記憶されていることに応じて当該セッションの無効化を抑止する、
ことを特徴とする請求項1記載の情報処理システム。
- 前記リクエスト受付部は、前記識別情報記憶部に記憶した識別情報に対応するリクエストの処理が完了するごとに、対応するセッションの識別情報を前記識別情報記憶部から削除する、
ことを特徴とする請求項3に記載の情報処理システム。
- 前記タイムアウト検出部は、所定の期間ごとに、終了していない全てのセッションについて、各セッションについての前記経過時間が前記タイムアウト時間を経過したセッションを検出し、
前記制御部は、前記タイムアウト検出部によって前記経過時間が前記タイムアウト時間を経過したと検出されたセッションについて、対応するセッションの識別情報が前記識別情報記憶部に記憶されていない場合に、当該セッションを無効化する、
ことを特徴とする請求項3又は4に記載の情報処理システム。
- 前記リクエスト記憶部は、
受信した順に実行するリクエストを記憶する第1リクエスト記憶部と、
実行する順序を変更可能なリクエストを記憶する第2リクエスト記憶部と、を備え、
前記制御部は、
前記第2リクエスト記憶部に記憶した複数のリクエストのそれぞれに対応するセッションに関する処理に要する見積もり時間を算出し、
前記第1リクエスト記憶部に記憶したリクエストについては、リクエストを受信した順に実行し、
前記第2リクエスト記憶部に記憶したリクエストについては、前記見積もり時間が短いセッションに関するリクエストから順に実行する、
ことを特徴とする請求項1に記載の情報処理システム。
- 前記セッション情報記憶部は、各リクエストを送信したクライアント装置の識別情報に対応付けて、各クライアント装置の種類に応じて異なるタイムアウト時間を記憶し、
前記タイムアウト検出部は、前記セッション情報記憶部に記憶された複数のセッションについて、前記セッション情報記憶部に記憶された各セッションに対応するタイムアウト時間と比較することによって、各セッションのタイムアウトを検出する、
ことを特徴とする請求項1記載の情報処理システム。
- 前記タイムアウト時間は、
前記クライアント装置が外部入力を受信することに応じて前記リクエストを発行するクライアント装置である場合には、前記タイムアウト時間は前記外部入力の間隔に応じた第1の時間に設定され、
前記クライアント装置が外部入力を受信することに係わりなく前記リクエストを発行するクライアント装置である場合には、前記タイムアウト時間は前記第1の時間よりも短い第2の時間に設定される、
ことを特徴とする請求項3記載の情報処理システム。
- 複数のクライアント装置からのリクエストを受信し、
前記複数のクライアント装置から受信した複数のリクエストのうち、処理が開始されないリクエストを、一時的にリクエストを記憶するリクエスト記憶部に格納し、
前記複数のクライアント装置と通信を行うために確立された複数のセッションの情報がセッション情報記憶部に記憶された複数のセッションのうち、セッションに対応するリクエストの処理が実行されていない状態で経過した経過時間が予め定められたタイムアウト時間を経過したセッションを検出し、
前記経過時間が前記タイムアウト時間を経過したと検出されたセッションについて、当該セッションに対応するクライアント装置から受信したリクエストが前記リクエスト記憶部に格納されていることに応じて、前記タイムアウト時間の経過に起因する当該セッションの無効化を抑止する、
処理をコンピュータに実行させることを特徴とする情報処理方法。
- コンピュータに、
複数のクライアント装置からのリクエストを受信し、
前記複数のクライアント装置から受信した複数のリクエストのうち、処理が開始されないリクエストを、一時的にリクエストを記憶するリクエスト記憶部に格納し、
前記複数のクライアント装置と通信を行うために確立された複数のセッションの情報がセッション情報記憶部に記憶された複数のセッションのうち、セッションに対応するリクエストの処理が実行されていない状態で経過した経過時間が予め定められたタイムアウト時間を経過したセッションを検出し、
前記経過時間が前記タイムアウト時間を経過したと検出されたセッションについて、当該セッションに対応するクライアント装置から受信したリクエストが前記リクエスト記憶部に格納されていることに応じて、前記タイムアウト時間の経過に起因する当該セッションの無効化を抑止する、
処理を実行させるためのプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016057853A JP2017174038A (ja) | 2016-03-23 | 2016-03-23 | 情報処理システム、情報処理方法およびプログラム |
US15/459,559 US20170279895A1 (en) | 2016-03-23 | 2017-03-15 | Information processing system and information processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016057853A JP2017174038A (ja) | 2016-03-23 | 2016-03-23 | 情報処理システム、情報処理方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017174038A true JP2017174038A (ja) | 2017-09-28 |
Family
ID=59898363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016057853A Pending JP2017174038A (ja) | 2016-03-23 | 2016-03-23 | 情報処理システム、情報処理方法およびプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20170279895A1 (ja) |
JP (1) | JP2017174038A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220129295A1 (en) | 2020-10-25 | 2022-04-28 | Meta Platforms, Inc. | Server-side hosted environment for a cloud gaming system |
US20230289880A1 (en) * | 2022-03-11 | 2023-09-14 | Cboe Exchange, Inc. | Access control of an electronic exchange network |
CN115361433B (zh) * | 2022-07-27 | 2024-07-26 | 北京仁科互动网络技术有限公司 | 基于阻塞队列的会话结束方法、装置和电子设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918020A (en) * | 1997-02-28 | 1999-06-29 | International Business Machines Corporation | Data processing system and method for pacing information transfers in a communications network |
US20030156547A1 (en) * | 2002-02-15 | 2003-08-21 | Exanet. Inc. | System and method for handling overload of requests in a client-server environment |
CN102857483B (zh) * | 2011-06-30 | 2016-06-29 | 国际商业机器公司 | 预取数据的方法、设备和装置 |
JP6015438B2 (ja) * | 2012-12-28 | 2016-10-26 | ブラザー工業株式会社 | 印刷装置 |
JP6464768B2 (ja) * | 2015-01-21 | 2019-02-06 | 富士ゼロックス株式会社 | 応答装置及びプログラム |
-
2016
- 2016-03-23 JP JP2016057853A patent/JP2017174038A/ja active Pending
-
2017
- 2017-03-15 US US15/459,559 patent/US20170279895A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20170279895A1 (en) | 2017-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI830694B (zh) | 用於資料處理和資料存儲的設備及方法 | |
US10484464B2 (en) | Connection control device, connection control system, and non-transitory computer readable medium | |
US8539077B2 (en) | Load distribution apparatus, load distribution method, and storage medium | |
CN102571772B (zh) | 一种元数据服务器热点均衡方法 | |
JP6248560B2 (ja) | 管理プログラム、管理方法、および管理装置 | |
JP6631710B2 (ja) | 仮想化管理プログラム、仮想化管理装置および仮想化管理方法 | |
JP2010204876A (ja) | 分散システム | |
JP4992408B2 (ja) | ジョブ割当プログラム、方法及び装置 | |
WO2004105350A2 (en) | Method and system for managing a streaming media service | |
JP6272190B2 (ja) | 計算機システム、計算機、負荷分散方法及びそのプログラム | |
WO2015049742A1 (ja) | ストレージシステムおよびストレージシステム制御方法 | |
JP6062034B2 (ja) | 処理制御システム、処理制御方法、および処理制御プログラム | |
JP6972714B2 (ja) | データ取得プログラム、装置、及び方法 | |
CN107819825A (zh) | 一种服务调度方法、装置和电子设备 | |
KR100671635B1 (ko) | 스트리밍 미디어 서비스 관리 방법 | |
JP2017174038A (ja) | 情報処理システム、情報処理方法およびプログラム | |
JP5531278B2 (ja) | サーバ構成管理システム | |
JP2011243162A (ja) | 台数制御装置、台数制御方法及び台数制御プログラム | |
JP2006100906A (ja) | ネットワークシステムの運用管理方法及びストレージ装置 | |
JP5835015B2 (ja) | 分散キャッシュについてのシステム、プログラム及び方法 | |
JP2009252050A (ja) | サーバ負荷管理システム、サーバ負荷管理方法、サーバ負荷管理プログラム | |
KR101997986B1 (ko) | 상호 작용하는 IoT 어플리케이션을 위한 클라우드-포그-클라이언트 삼각 컴퓨팅 방법 및 장치 | |
JP5056346B2 (ja) | 情報処理装置、情報処理システム、仮想サーバの移動処理の制御方法、及び、プログラム | |
JP5262751B2 (ja) | 資源情報管理サーバ、資源情報管理システム、資源情報管理方法および資源情報管理プログラム | |
US20150067014A1 (en) | Computer system and control method of computer system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20180528 |