JP5476208B2 - リクエスト処理システム、方法及びプログラム - Google Patents

リクエスト処理システム、方法及びプログラム Download PDF

Info

Publication number
JP5476208B2
JP5476208B2 JP2010110655A JP2010110655A JP5476208B2 JP 5476208 B2 JP5476208 B2 JP 5476208B2 JP 2010110655 A JP2010110655 A JP 2010110655A JP 2010110655 A JP2010110655 A JP 2010110655A JP 5476208 B2 JP5476208 B2 JP 5476208B2
Authority
JP
Japan
Prior art keywords
request
queue
heap
consumption
processing
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.)
Expired - Fee Related
Application number
JP2010110655A
Other languages
English (en)
Other versions
JP2011238141A (ja
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2010110655A priority Critical patent/JP5476208B2/ja
Priority to US13/104,710 priority patent/US9489235B2/en
Publication of JP2011238141A publication Critical patent/JP2011238141A/ja
Priority to US13/406,667 priority patent/US9471374B2/en
Application granted granted Critical
Publication of JP5476208B2 publication Critical patent/JP5476208B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Description

この発明は、ウェブ・サーバなどのように、リクエストを順次受け付けてキューに入れ、処理するコンピュータ・システムに関し、キュー上で待機するリクエストの処理の効率化に関する。
近年、インターネット技術が隆盛するにつれて、インターネット上に配置され、クラアイント・システムからアクセス可能なウェブ・サーバが増大している。ウェブ・サーバは通常、インターネットを介して多数のクライアント・コンピュータから、処理リクエストを受け取るので、これを一度に処理することはできず、一旦キューに入れて、順次処理する。
このようにキューに入れられたリクエストを、少しでも早く合理的に処理する技法が要望されている。
特開2003−283556号公報は、クライアントからサーバへの要求を、データ通信中継装置を介して行い、データ通信中継装置は要求の優先度付きのキューイング手段を持ち、ある優先度に応じて、要求の中継順序も入れ替える手段を持ち、これにより、サーバへの同時要求数をサーバの処理能力内に押さえもとともに、安定したサービスを提供することを開示する。
特開2006−72760号公報は、情報装置からのリクエスト情報に応じてサービスを提供するサーバの負荷を監視し、情報装置からのリクエスト情報を受信した際に、前記監視の結果、負荷が所定条件を満たしていれば該リクエスト情報を前記サーバに通知し、負荷が所定条件を満たしていなければ該リクエスト情報を保留にして当該情報装置の情報を待ち行列に加え、前記待ち行列に加えた情報装置に対し、待ち時間に応じたインセンティブの発行を通知すると共に、この情報装置とインセンティブとを対応付けて記憶し、前記監視の結果、新規リクエストが可能な場合に、所定の順で前記情報装置の情報を待ち行列から除き、当該情報装置からのリクエスト情報を前記サーバへ通知することを開示する。
特開2007−329617号公報は、IPネットワークでの呼処理サーバに関し、呼処理バッファに優先度の異なる2種類以上のキューを用意することにより、接続要求処理の実行を切断要求処理の実行よりも優先して行い、呼処理タスクが次の処理を行うために、キューからイベントを取り出す際に、キューの間で取り出し順の優先制御を行うことを開示する。この際、ルータなどのパケット転送処理と同様に、PQ、あるいは、WRRなどのスケジューリングアルゴリズムを適用し、応答時間条件の厳しい処理要求呼を優先して処理する。
Oliver Rose, "THE SHORTEST PROCESSING TIME FIRST (SPTF) DISPATCH RULE AND SOME VARIANTS IN SEMICONDUCTOR MANUFACTURING, Proceedings of the 2001 Winter Simulation Conference は、キューにおいて、処理時間が短い案件を先に処理することで、全体の待ち時間が減少するという一般的な技法を開示する。
すなわち、上記特許公開公報に開示されているような技術、あるいは、SPTF技法を用いることによって、キュー上にあるリクエストの平均待ち時間を減らすことができる。
ところが、最近ウェブ・サーバによく使われている、Java(商標)ベースのサーバにおいては、あるリクエストを処理しようとして、その処理のためのヒープ残量が十分でないと、ガベージ・コレクション(以下、GCとも称する)が発生する。このGCが行われている間、全てのアプリケーション・スレッドが停止されてしまい、GCの終了後、アプリケーション・スレッドは再開される。なお、このような、全てのアプリケーション・スレッドを一旦停止させてしまうようなGCの現象は、"Stop the world"と呼ばれる。
このようなガベージ・コレクションの発生を考慮に入れるとき、上記従来技術のキューイング・スキームでは、リクエストの平均待ち時間を減少させるという目的を達成することはできない。なぜなら、どの時点で、どのリクエストがGCを発生させるか、考慮されないからである。
なお、Java(商標)のスレッド環境におけるGCポイントについては、Ole Agesen, "GC Points in a Threaded Environment", Sun Microsystems, Inc. Mountain View, CA, USA Technical Report: TR-98-70, 1998などに記述されている。
特開2003−283556号公報 特開2006−72760号公報 特開2007−329617号公報
Oliver Rose, "THE SHORTEST PROCESSING TIME FIRST (SPTF) DISPATCH RULE AND SOME VARIANTS IN SEMICONDUCTOR MANUFACTURING", Proceedings of the 2001 Winter Simulation Conference Ole Agesen, "GC Points in a Threaded Environment", Sun Microsystems, Inc. Mountain View, CA, USA Technical Report: TR-98-70, 1998
従って、この発明の目的は、GCが発生しえるというシステム環境で、キュー上にあるリクエストの平均待ち時間を減少させるための処理技法を提供することにある。
上記目的は、キュー上にあるリクエストと、そのリクエストを処理した際に発生し得るGCの完了時間を1つの単位とし、この単位に対して、GC時間も含む処理時間が短い単位を先に処理することをシステム的に実行することにより、達成される。
キューを管理している、例えばウェブ・サーバであるコンピュータ・システムは、あるリクエストを処理する時点でのヒープの残量を把握している。一方、コンピュータ・システムは、リクエストのタイプに応じて、どれくらいのヒープ量を消費するかを事前に統計的に計算して、その値を保持している。
すると、コンピュータ・システムは、あるリクエストを処理する際に、そのリクエストの予測ヒープ消費量と、メモリにおけるヒープの残量を考慮して、GCを起こすかどうか予め予測することができる。このことが、リクエストと、そのリクエストを処理した際に発生し得るGCの完了時間を1つの単位として扱えることの理論的根拠となる。
この際、好適には、リクエストの処理時間そのものも考慮されるが、一般的には、リクエストの処理時間よりもGC時間の方が圧倒的に長いので、GC時間のみに着目して、処理時間が短い単位を先に処理するようにしてもよい。
以上のように、この発明によれば、GCが発生しえるというシステム環境で、キュー上にあるリクエストと、そのリクエストを処理した際に発生し得るGCの完了時間を1つの単位とし、この単位に対して、GC時間も含む処理時間が短い単位を先に処理することをシステム的に実行することにより、キュー上にあるリクエストの平均待ち時間を減少させることができるという効果が得られる。
すなわち、GCが早晩起こることは避けられないので、GCが起きる前に可能な限り、比較的軽いリクエストが早めに処理されるという次第である。
アプリケーション・サーバに、インターネットを介して、クライアント・コンピュータが接続されることを示す図である。 クライアント・コンピュータのハードウェア構成を示す図である。 アプリケーション・サーバ・サーバのハードウェア構成を示す図である。 本発明の実施例の機能ブロック図である。 リクエストがキューに到着したときの処理のフローチャートを示す図である。 リクエストを、ヒープ消費量クラスに分ける処理のフローチャートを示す図である。 キューからリクエストを削除して処理する場合の処理のフローチャートを示す図である。 リクエストのヒープ消費量を測定する処理のフローチャートを示す図である。 ヒープ残量と、リクエストのヒープ消費量及びクラスを考慮して、リクエストの処理順序を決定する処理を説明するための図である。 ヒープ残量と、リクエストのヒープ消費量及びクラスを考慮して、リクエストの処理順序を決定する処理を説明するための図である。 ヒープ残量と、リクエストのヒープ消費量及びクラスを考慮して、リクエストの処理順序を決定する処理を説明するための図である。
以下、図面を参照して、本発明の実施例を説明する。特に断わらない限り、同一の参照番号は、図面を通して、同一の対象を指すものとする。また、以下で説明するのは、本発明の一実施形態であり、この発明を、この実施例で説明する内容に限定する意図はないことに留意されたい。
図1において、ウェブ・サーバの機能を併せ持つアプリケーション・サーバ102には、インターネット104を介して、複数のクライアント・コンピュータ106a、106b・・・106zから、HTTPなどのプロトコルにより、リクエストを受け取る。。図1のシステムにおいては、クライアント・コンピュータのユーザは、Webブラウザを通じて、インターネット104の回線を介して、アプリケーション・サーバ102に、ログインする。具体的には、所定のURLをWebブラウザに打ち込んで、所定のページを表示する。なお、Webブラウザではなく、所定の専用クライアント・アプリケーション・プログラムを使ってログインするようにしてもよい。
次に、図2を参照して、図1で参照番号106a、106b・・・106zのように示されているクライアント・コンピュータのハードウェア・ブロック図について、説明する。図2において、クライアント・コンピュータは、主記憶206、CPU204、IDEコントローラ208をもち、これらは、バス202に接続されている。バス202には更に、ディスプレイ・コントローラ214と、通信インターフェース218と、USBインターフェース220と、オーディオ・インターフェース222と、キーボード・マウス・コントローラ228が接続されている。IDEコントローラ208には、ハードディスク・ドライブ(HDD)210と、DVDドライブ212が接続されている。DVDドライブ212は、必要に応じて、CD−ROMやDVDから、プログラムを導入するために使用する。ディスプレイ・コントローラ214には、好適には、LCD画面をもつディスプレイ装置216が接続されている。ディスプレイ装置216には、Webブラウザを通じて、アプリケーションの画面が表示される。
USBインターフェース220には、必要に応じて、拡張ハードディスクなどのデバイスを接続をすることができる。
キーボード・マウス・コントローラ228には、キーボード230と、マウス232が接続されている。キーボード230は、所定のリクエストのメッセージや、パスワードなどを打ち込むために使用される。
CPU204は、例えば、32ビット・アーキテクチャまたは64ビット・アーキテクチャに基づく任意のものでよく、インテル社のPentium(インテル・コーポレーションの商標)4、Core(商標)2 Duo、AMD社のAthlon(商標)などを使用することができる。
ハードディスク・ドライブ210には、少なくとも、オペレーティング・システムと、オペレーティング・システム上で動作するWebブラウザ(図示しない)が格納されており、システムの起動時に、オペレーティング・システムは、メインメモリ206にロードされる。オペレーティング・システムは、Windows XP(マイクロソフト・コーポレーションの商標)、Windows Vista(マイクロソフト・コーポレーションの商標)、Windows(マイクロソフト・コーポレーションの商標) 7、Linux(Linus Torvaldsの商標)などを使用することができる。また、Webブラウザは、マイクロソフト・コーポレーションのInternet Explorer、Mozilla FoundationのMizilla FireFoxなど、任意のものを使用することができる。
通信インターフェース218は、オペレーティング・システムが提供するTCP/IP通信機能を利用して、イーサネット(商標)・プロトコルなどにより、アプリケーション・サーバ102と、通信する。
図3は、アプリケーション・サーバ102のハードウェア構成の概要ブロック図である。図3に示すように、クライアント・コンピュータ106a、106b・・・106zは、インターネット104を経由して、アプリケーション・サーバ102の通信インターフェース302に接続される。通信インターフェース302はさらに、バス304に接続され、バス304には、CPU306、主記憶(RAM)308、及びハードディスク・ドライブ(HDD)310が接続されている。
図示しないが、アプリケーション・サーバ102にはさらに、キーボード、マウス、及びディスプレイが接続され、これらによって、アプリケーション・サーバ102全体の管理やメンテナンス作業を行うようにしてもよい。
アプリケーション・サーバ102のハードディスク・ドライブ310には、オペレーティング・システム、クライアント・コンピュータ106a、106b・・・106zのログイン管理のための、ユーザIDとパスワードの対応テーブルが保存されている。ハードディスク・ドライブ310にはさらに、アプリケーション・サーバ102をWebサーバとして機能させるためのApacheなどのソフトウェア、及びJava仮想環境を実現するJava EE、及びJava仮想環境上で動作する本発明に係る後述する処理プログラム等が保存され、アプリケーション・サーバ102の立ち上げ時に、主記憶308にロードされて、動作する。これによって、クライアント・コンピュータ106a、106b・・・106zが、TCP/IPのプロトコルで、アプリケーション・サーバ102にアクセスすることが可能となる。
尚、上記アプリケーション・サーバ102として、インターナョナル・ビジネス・マシーンズ・コーポレーションから購入可能な、IBM(インターナョナル・ビジネス・マシーンズ・コーポレーションの商標)System X、System i、System pなどの機種のサーバを使うことができる。その際、使用可能なオペレーティング・システムは、AIX(インターナョナル・ビジネス・マシーンズ・コーポレーションの商標)、UNIX(The Open Groupの商標)、Linux(商標)、Windows(商標)2003 Serverなどがある。
次に、図4の機能ブロック図を参照して、本発明の実施例の論理構成について説明する。
図4において、リクエスト受信モジュール402は実際上、Webサーバとして動作するApacheなどのソフトウェアの一部であり、HTTPなどのプロトコルでクライアント・コンピュータ106a、106b・・・106zから送られてきたリクエストを受信し、キュー404に入れる。キュー404は好適には、主記憶308上に確保されたメモリ領域であり、処理スケジューラ406の働きにより、リクエスト処理モジュール408に対して順次リクエストをキュー404から出したり、キュー404上でリクエストの順序を変更したりすることができる。
ここでリクエスト処理モジュール408は、実際は、さまざまな機能を実行する、Javaで書かれたプログラムの集まりであると考えてもよい。すなわち、リクエストのタイプに応じて、異なるプログラムが呼び出される。
主記憶308上には、ヒープ領域410が確保されており、ヒープ領域410では、リクエスト処理モジュール408がリクエストを処理する度にメモリが消費される。ヒープ残量監視モジュール412は、ヒープの使用可能な残量を監視し、残量が不足すると、ガベージ・コレクション機能414を呼び出して、ヒープ領域410の容量を確保し直す。ここで、ガベージ・コレクション機能414は、"Stop the world"タイプのガベージ・コレクションであり、Java仮想マシンの基本的な機能の1つである。
なお、処理スケジューラ406、リクエスト処理モジュール408及びヒープ残量監視モジュール412は、Javaで書かれたプログラムであり、好適には、アプリケーション・サーバ102の起動時に、並列に動作するスレッドとして構成される。
ヒープ消費量データベース416は、リクエストのタイプ毎に、予測されるヒープの消費量を記録しておくデータベースであり、好適には、ハードディスク・ドライブ310に永続的に記録されるが、主記憶308上に格納してもよい。なお、この実施例におけるリクエストとは例えば、普通のWebページの表示、検索などの処理、あるいは、複数Webページのレイアウト表示などのことである。また、リクエストのタイプとは、クライアント・コンピュータから送られてくるURLにパラメータとして指定される、例えばbrowse.jsp?id=123のような文字列のことである。このような文字列は、Javaのミドルウェアの構文解析処理によって切り出される。このようなパラメータに従い、対応するJavaプログラムが呼び出される。
処理スケジューラ406は、ヒープ残量監視モジュール412及びヒープ消費量データベース416からの情報に基づきキュー404を処理して、リクエストをリクエスト処理モジュール408を送るが、そのより詳しい処理は、図5以下に示すフローチャートに従い、説明する。
リクエスト処理モジュール408の処理結果は、処理結果送信モジュール418を介して、リクエストしたクライアント・コンピュータに返される。処理結果送信モジュール418は、好適には、Webサーバとして動作するApacheなどのソフトウェアの一部として実装される。
図5は、リクエストRがキュー404(以下、キューQとも称する)に到着したときに、処理スケジューラ406によって行われる処理のフローチャートである。ステップ502で、リクエストRがキューQに入ると、処理スケジューラ406は、ミドルウェアの構文解析機能を利用して、リクエスト・タイプTを解析する。
次のステップ504で、処理スケジューラ406は、データベース416にアクセスして、リクエスト・タイプTの処理時の予測される平均ヒープ消費量Hを取得しようと試みる。ステップ506でHが取得できない、すなわちまだ処理スケジューラ406が処理したことがないタイプであるなら、処理スケジューラ406は、ステップ508で、リクエストRのヒープ消費量統計フラグLをセットして、次のリクエストがキューに到来を待つステップ502に戻る。こうしておくと、別途の処理で、リクエストRのヒープ消費量が計測され、そのタイプTに対応するヒープ消費量がデータベース416に登録されることになる。
ステップ506に戻って、Tの処理時の平均ヒープ消費量Hを取得できたなら、ステップ510で、処理スケジューラ406は、平均ヒープ消費量Hの対応するクラスCを計算する。次にステップ512では、HとCをリクエストRに関連付けて、次のリクエストがキューに到来を待つステップ502に戻る。
図6は、ステップ510の詳細の処理を示すフローチャートである。ステップ602で、処理スケジューラ406は、ステップ504で取得した平均ヒープ消費量Hが、ある閾値Eより大きいかどうか判断し、もしそうならステップ604で、平均ヒープ消費量HのクラスがClargeであるとセットし、そうでなければステップ602で、平均ヒープ消費量HのクラスがCsmallであるとセットする。
図7は、処理スケジューラ406が、キューQからリクエストを削除して処理する処理のフローチャートである。
ステップ702では、処理スケジューラ406は、リクエスト処理モジュール408に問い合わせてリクエスト処理の準備が出来たかどうか判断し、もしそうなら、キューQの先頭リクエストRのHとCを取得する。この値は、そのリクエストがキューQに入れられた段階で、図5のフローチャートの処理で取得されている。
ステップ704では、処理スケジューラ406は、キューQの先頭リクエストRのヒープ消費クラスCがClargeであり、Hはヒープ残量Fより大きいかどうかを判断する。このとき、ヒープ残量Fは、ヒープ残量監視モジュール412から取得される。
ステップ704での判断が肯定的であるなら、ステップ706で、消費クラスがCsmallであるキューQ内のリクエストを、キューQ内で、リクエストRの前に移動させる。これによって、その消費クラスがCsmallであるリクエストが、キューQ内での先頭リクエストとなる。こうして次にステップ708に進む。
ステップ704での判断が否定的であるなら、処理は直ちにステップ708に進む。
ステップ708では、処理スケジューラ406は、キューQから先頭のリクエストを削除し、図8のフローチャートの処理を呼び出す。そうして、ステップ702に戻る。
次に、図8のフローチャートを参照して、図7のステップ708のリクエスト削除以降の処理を、より詳細に説明する。図8において、ステップ802では、処理スケジューラ406とは別のワーカースレッド(図示しない)が、未処理命令があるかどうか判断し、もうそうなら、ステップ804に進み、命令はヒープ割当を行うかどうか判断する。もしそうなら、ステップ806に進み、リクエストのフラグLがセットかどうか判断する。リクエストのフラグLとは、図5のフローチャートの処理のステップ508で条件に従いセットされているものであり、フラグLのセットとは、リクエストのヒープ消費量統計を計測して記録すべきことを意味する。
そこで、ステップ808では、ワーカースレッドは、現在の命令のヒープ割当量を、リクエストのタイプTに関連付け、ステップ810での命令実行に進む。
ステップ804で命令がヒープ割当でない場合も、ステップ806でリクエストのフラグLがセットされていない場合も、処理は直接ステップ810に進む。
ステップ802に戻って、未処理命令がないと判断されると、ステップ812に進み、そこで、ワーカースレッドは、リクエストのフラグLがセットかどうか判断する。もしそうなら、ステップ814で、ワーカースレッドは、タイプTに関連づいヒープ割当量を、Tのヒープ消費量としてデータベース416に保存して、ステップ708に戻る。リクエストのフラグLがセットされていないなら、直ちにステップ708に戻る。
この実施例の処理をよりよく理解するために、全体を通しての動作を説明する。先ず、クライアント・コンピュータ106aのユーザが、ディスプレイ216にWebブラウザを呼び出して、所定の操作ボタン(図示しない)をクリックすると、HTTPプロトコルに従い、所定のURLと、リクエスト・タイプを示す追加のパラメータを含むリクエストが、インターネット回線を通じて、アプリケーション・サーバ102に送られる。この場合、リクエストは、Webページの一覧レイアウト表示であるとする。
送られたリクエストは、アプリケーション・サーバ102のリクエスト受信モジュール402によって受け取られ、キュー404に入れられる。このとき、ステップ502に記述されているように、ミドルウェアによる構文解析により、リクエスト・タイプを示す追加のパラメータが抽出される。
すると、処理スケジューラ406は、ステップ504で、そのリクエスト・タイプTを以って、ヒープ消費量データベース416にアクセスし、リクエスト・タイプTのヒープ消費量Hを取得しようと試みる。このとき、既に処理済のリクエスト・タイプTであったとすると、ヒープ消費量Hが得られるので、そのHの値で以って、図6のフローチャートの処理により、リクエストはClargeであると判定されたとする。そのリクエストを、リクエスト1とする。
同様にして、次にクライアント・コンピュータ106bから、別のリクエストがアプリケーション・サーバ102のリクエスト受信モジュール402に届いたとする。それはキュー404に入れられ、このとき、ステップ502に記述されているように、ミドルウェアによる構文解析により、リクエスト・タイプを示す追加のパラメータが抽出される。この場合のリクエストは、単純なWebページ表示であるとする。
処理スケジューラ406は、ステップ504で、そのリクエスト・タイプTを以って、ヒープ消費量データベース416にアクセスし、リクエスト・タイプTのヒープ消費量Hを取得しようと試みる。このとき、既に処理済のリクエスト・タイプTであったとすると、ヒープ消費量Hが得られるので、そのHの値で以って、図6のフローチャートの処理により、リクエストはCsmallであると判定されたとする。そのリクエストを、リクエスト2とする。
すると、図9に示すように、クライアント・コンピュータ106aからのWebページの一覧レイアウト表示リクエストであるリクエスト1が、キュー404の先頭に達したとき、クライアント・コンピュータ106bからの単純なWebページ表示リクエストであるリクエスト2が、キュー404の先頭から二番目に位置している。
ところが、ステップ704で、先頭にあるリクエスト1がClargeであり且つ、そのヒープ消費量Hが、ヒープ残量監視モジュール412から取得したヒープ残量Fより大きいと判定されると、図9から見て取れるように、このままリクエスト1を実行すると、確実にGCが起こってしまう。
そこで、ステップ706で、処理スケジューラ406は、Csmallであるリクエストをキュー404内で先頭から探すが、たまたま次のリクエスト2がCsmallなので、リクエスト2を先頭に移動させ、ステップ708で、図10に示すように、リクエスト処理モジュール408にリクエスト2を処理させる。すると、ヒープ残量Fよりも、ヒープ消費量Hが小さいので、とりあえずGCが起こるのが回避される。こうすることによって、GCを起す前に処理されるリクエストの数を可能な限り増やすことができる。
リクエスト2が処理されると、図11に示すように、リクエスト1がキュー404の先頭に来る。ヒープ残量Fは、リクエスト2の実行により、さらに減っている。するとリクエスト1のヒープ消費量Hは、明らかにヒープ残量Fより少ないので、ステップ706の判断で、Csmallのリクエストが検索され、次のリクエストがCsmallなので、リクエスト3が先頭に移動され、結果としてリクエスト1が二番目になる処理が行われる。
このように、Clargeのリクエストを実行するとGCが起こると予想される場合に、本発明によれば、Csmallのリクエストが先行して実行される。ヒープ残量Fが減ってくると、Csmallのリクエストを実行しても結局GCが避けられない時点が来るが、本発明によれば、GCが起きる前に可能な限り多数のリクエストを処理できるので、リクエスト毎の平均待ち時間は減少させることができる。
なお、ステップ506で、今まで処理したことがないリクエスト・タイプのリクエストであることにより、平均ヒープ消費量Hが得られない場合は、ステップ508でリクエストのヒープ消費統計フラグがセットされるものの直ちには平均ヒープ消費量Hは得られない。
すなわち、その平均ヒープ消費量Hが得られてデータベース416に記録されるのは、図8のフローチャートに示すように、そのリクエストが処理された後である。すると、そのようなリクエストが処理準備可能となってステップ704の判断に遭遇したときは、まだ、消費クラスCも、平均ヒープ消費量Hも未知ということになる。そこで例えば、消費クラスCも、平均ヒープ消費量Hも未知であるリクエストについては、ステップ704でとりあえず、クラスはClargeで、平均ヒープ消費量Hは、Clargeのクラス全体の平均のヒープ消費量であると想定して、処理を進めることにしてもよい。
そのリクエストが処理された後は、そのリクエスト・タイプの平均ヒープ消費量Hがデータベース416に記録されるので、次回の処理からは、そのリクエスト・タイプのリクエストに適切な消費クラスCと、平均ヒープ消費量Hが割り当てられる。
なお、上記実施例では、リクエストを、タイプに応じて、Csmallと、Clargeに分けたが、特にクラス分けせず、ステップ704のところで、リクエストの平均ヒープ消費量Hと、ヒープ残量Fだけに基づき、GCを引き起こさないと判断されるリクエストをキューで繰り上げて先に処理するようにしてもよい。
また、上記実施例は、Java VMでの実装に基づき説明したが、処理キューをもち、GCを引き起こしえるシステムであれば、サーバ・クライアント環境であることに拘わらず、スタンド・アロン環境でも本発明は適用可能であることを理解されたい。もちろん、特定のOSやアプリケーションにも限定されるものではない。
102 アプリケーション・サーバ
104 インターネット
202 バス
206 主記憶
204 CPU
208 IDEコントローラ
212 DVDドライブ
214 ディスプレイ・コントローラ
218 通信インターフェース
220 USBインターフェース
222 オーディオ・インターフェース
228 キーボード・マウス・コントローラ
216 ディスプレイ装置
230 キーボード
232 マウス
210 ハードディスク・ドライブ
206 メインメモリ
302 通信インターフェース
304 バス
306 CPU
310 ハードディスク・ドライブ
308 主記憶
402 リクエスト受信モジュール
404 キュー
406 処理スケジューラ
408 リクエスト処理モジュール
410 ヒープ領域
412 ヒープ残量監視モジュール
414 ガベージ・コレクション機能
416 ヒープ消費量データベース
418 処理結果送信モジュール

Claims (15)

  1. 処理すべきリクエストを入れるためのキューをもち、該キューから取り出されたリクエストを処理する際のヒープ残量不足に応じてガベージ・コレクションを起しえるシステムにおいて、該リクエストを処理するためのシステムであって、
    前記キューにある処理すべきリクエストについて、予測されるヒープ消費量を取得するヒープ消費量取得手段と、
    前記キューの先頭にあるリクエストについて、前記ヒープ消費量取得手段により取得された、予測されるヒープ消費量が前記ヒープ残量よりも大きいことに応答して、前記キュー中で、予測されるヒープ消費量が前記ヒープ残量よりも小さいと期待されるリクエストを見出す手段と、
    前記見出されたリクエストを、前記キュー中で、前記キューの先頭にあるリクエストより前に移動させる手段を有する、
    リクエスト処理システム。
  2. 前記ヒープ消費量取得手段は、処理済みのリクエストのタイプ毎のヒープ消費量を、リクエストのタイプによって検索可能に記録するデータベースを有する、請求項1に記載のシステム。
  3. 前記キューにある処理すべきリクエストについて、取得された予測されるヒープ消費量に応じて、ヒープ消費量が相対的に大きい第1のクラスと、ヒープ消費量が相対的に小さい第2のクラスに分ける手段をさらに有し、前記リクエストを見出す手段が、該第2のクラスのリクエストを前記キュー中で探す、請求項1に記載のシステム。
  4. 前記リクエストを処理するためのシステムは、インターネット上のサーバであり、前記リクエストは、クライアント・コンピュータから、インターネット経由で送られる、請求項1に記載のシステム。
  5. 前記サーバは、Java VMで実装される、請求項4に記載のシステム。
  6. 処理すべきリクエストを入れるためのキューをもち、該キューから取り出されたリクエストを処理する際のヒープ残量不足に応じてガベージ・コレクションを起しえるシステムにおいて、該リクエストを処理するための方法であって、
    前記キューにある処理すべきリクエストについて、予測されるヒープ消費量を取得するステップと、
    前記キューの先頭にあるリクエストについて、前記予測されるヒープ消費量が前記ヒープ残量よりも大きいことに応答して、前記キュー中で、予測されるヒープ消費量が前記ヒープ残量よりも小さいと期待されるリクエストを見出すステップと、
    前記見出されたリクエストを、前記キュー中で、前記キューの先頭にあるリクエストより前に移動させるステップを有する、
    リクエスト処理方法。
  7. 前記ヒープ消費量取得するステップは、処理済みのリクエストのタイプ毎のヒープ消費量を、リクエストのタイプによって検索可能に記録するステップを有する、請求項6に記載の方法。
  8. 前記キューにある処理すべきリクエストについて、取得された予測されるヒープ消費量に応じて、ヒープ消費量が相対的に大きい第1のクラスと、ヒープ消費量が相対的に小さい第2のクラスに分けるステップをさらに有し、前記リクエストを見出すステップが、該第2のクラスのリクエストを前記キュー中で探す、請求項6に記載の方法。
  9. 前記システムは、インターネット上のサーバであり、前記リクエストは、クライアント・コンピュータから、インターネット経由で送られる、請求項6に記載の方法。
  10. 前記サーバは、Java VMで実装される、請求項9に記載の方法。
  11. 処理すべきリクエストを入れるためのキューをもち、該キューから取り出されたリクエストを処理する際のヒープ残量不足に応じてガベージ・コレクションを起しえるシステムにおいて、該リクエストを処理するためのプログラムであって、
    前記システムのコンピュータをして、
    前記キューにある処理すべきリクエストについて、予測されるヒープ消費量を取得するステップと、
    前記キューの先頭にあるリクエストについて、前記予測されるヒープ消費量が前記ヒープ残量よりも大きいことに応答して、前記キュー中で、予測されるヒープ消費量が前記ヒープ残量よりも小さいと期待されるリクエストを見出すステップと、
    前記見出されたリクエストを、前記キュー中で、前記キューの先頭にあるリクエストより前に移動させるステップを実行させる、
    リクエスト処理プログラム。
  12. 前記ヒープ消費量を取得するステップは、処理済みのリクエストのタイプ毎のヒープ消費量を、リクエストのタイプによって検索可能に記録するステップを有する、請求項11に記載のプログラム。
  13. 前記キューにある処理すべきリクエストについて、取得された予測されるヒープ消費量に応じて、ヒープ消費量が相対的に大きい第1のクラスと、ヒープ消費量が相対的に小さい第2のクラスに分けるステップをさらに有し、前記リクエストを見出すステップが、該第2のクラスのリクエストを前記キュー中で探す、請求項11に記載のプログラム。
  14. 前記システムは、インターネット上のサーバであり、前記リクエストは、クライアント・コンピュータから、インターネット経由で送られる、請求項11に記載のプログラム。
  15. 前記サーバは、Java VMで実装される、請求項14に記載のプログラム。
JP2010110655A 2010-05-12 2010-05-12 リクエスト処理システム、方法及びプログラム Expired - Fee Related JP5476208B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010110655A JP5476208B2 (ja) 2010-05-12 2010-05-12 リクエスト処理システム、方法及びプログラム
US13/104,710 US9489235B2 (en) 2010-05-12 2011-05-10 Request processing system, method and program product
US13/406,667 US9471374B2 (en) 2010-05-12 2012-02-28 Request processing system, method and program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010110655A JP5476208B2 (ja) 2010-05-12 2010-05-12 リクエスト処理システム、方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2011238141A JP2011238141A (ja) 2011-11-24
JP5476208B2 true JP5476208B2 (ja) 2014-04-23

Family

ID=44912680

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010110655A Expired - Fee Related JP5476208B2 (ja) 2010-05-12 2010-05-12 リクエスト処理システム、方法及びプログラム

Country Status (2)

Country Link
US (2) US9489235B2 (ja)
JP (1) JP5476208B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9361224B2 (en) * 2013-09-04 2016-06-07 Red Hat, Inc. Non-intrusive storage of garbage collector-specific management data
CN113742087B (zh) * 2021-09-22 2023-12-12 深圳市玄羽科技有限公司 一种工业互联网大数据服务器的保护方法及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0793170A (ja) 1993-09-28 1995-04-07 Mitsubishi Electric Corp 通信バッファ管理装置
US6266742B1 (en) * 1997-10-27 2001-07-24 International Business Machines Corporation Algorithm for cache replacement
JP2003141158A (ja) * 2001-11-06 2003-05-16 Fujitsu Ltd 順序を考慮したパターンを用いた検索装置および方法
JP4116877B2 (ja) 2002-12-26 2008-07-09 富士通株式会社 ヒープサイズ自動最適化処理方法,ヒープサイズ自動最適化装置およびそのプログラム
US7107431B2 (en) * 2004-02-19 2006-09-12 International Business Machines Corporation Apparatus and method for lazy segment promotion for pre-translated segments
JP4756675B2 (ja) * 2004-07-08 2011-08-24 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータ資源のキャパシティを予測するためのシステム、方法およびプログラム
JP2007328413A (ja) 2006-06-06 2007-12-20 Hitachi Ltd 負荷分散方法
JP2008204243A (ja) 2007-02-21 2008-09-04 Hitachi Software Eng Co Ltd ジョブ実行制御方法およびシステム
US8001341B2 (en) * 2008-01-23 2011-08-16 International Business Machines Corporation Managing dynamically allocated memory in a computer system

Also Published As

Publication number Publication date
US20110282920A1 (en) 2011-11-17
JP2011238141A (ja) 2011-11-24
US9489235B2 (en) 2016-11-08
US20120215818A1 (en) 2012-08-23
US9471374B2 (en) 2016-10-18

Similar Documents

Publication Publication Date Title
WO2021159638A1 (zh) 集群队列资源的调度方法、装置、设备及存储介质
JP3882931B2 (ja) 仮想計算機環境におけるディスパッチ機能の管理
US10425349B2 (en) Idle worker-process page-out
US9875145B2 (en) Load based dynamic resource sets
CN102096603B (zh) MapReduce系统中的作业分解控制方法及设备
JP5664098B2 (ja) 複合イベント分散装置、複合イベント分散方法および複合イベント分散プログラム
EP1750200A2 (en) System and method for executing job step, and computer product
US20150121388A1 (en) Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium
JP2005062927A (ja) 負荷制御方法および装置並びにその処理プログラム
US20150121387A1 (en) Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core system and related non-transitory computer readable medium
EP3149921B1 (en) Providing router information according to a programmatic interface
Ouyang et al. Reducing late-timing failure at scale: Straggler root-cause analysis in cloud datacenters
JP4961931B2 (ja) ジョブ実行のスケジューリングプログラム、ジョブ実行のスケジューリング方法、ジョブ実行のスケジューリング装置
CN109213912A (zh) 一种抓取网络数据的方法及网络数据抓取调度装置
JP5476208B2 (ja) リクエスト処理システム、方法及びプログラム
KR101271211B1 (ko) 다중 쓰레드의 비동기 입출력 처리 장치 및 그 방법
JP4112511B2 (ja) タスク管理プログラムおよびタスク管理装置
CN117093335A (zh) 分布式存储系统的任务调度方法及装置
JP6285850B2 (ja) プロセスマイグレーション方法及びクラスタシステム
JP2018536945A (ja) タスクをタイムベーススケジューリングする方法及び装置
JP6264803B2 (ja) ジョブ抽出プログラム、ジョブ抽出装置、及びジョブ抽出方法
WO2013153620A1 (ja) データ処理システム及びデータ処理方法
JP2003219441A5 (ja)
JP6531597B2 (ja) 解析処理プログラム、解析処理方法および解析処理装置
CN114466079A (zh) 请求处理方法、装置、代理服务器及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140117

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: 20140121

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140207

R150 Certificate of patent or registration of utility model

Ref document number: 5476208

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees