JP5963682B2 - 要求をディスパッチするための方法、システム、およびコンピュータ・プログラム - Google Patents

要求をディスパッチするための方法、システム、およびコンピュータ・プログラム Download PDF

Info

Publication number
JP5963682B2
JP5963682B2 JP2012555374A JP2012555374A JP5963682B2 JP 5963682 B2 JP5963682 B2 JP 5963682B2 JP 2012555374 A JP2012555374 A JP 2012555374A JP 2012555374 A JP2012555374 A JP 2012555374A JP 5963682 B2 JP5963682 B2 JP 5963682B2
Authority
JP
Japan
Prior art keywords
execution
request
dispatch
execution mode
executable code
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
JP2012555374A
Other languages
English (en)
Other versions
JP2013521552A (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
Publication of JP2013521552A publication Critical patent/JP2013521552A/ja
Application granted granted Critical
Publication of JP5963682B2 publication Critical patent/JP5963682B2/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/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/41Flow control; Congestion control by acting on aggregated flows or links
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、ミドルウェアの分野に関し、詳細には、履歴メトリック(historicmetrics)を使用して要求ディスパッチに関する実行モードをプログラムによって決定することに関する。
アプリケーション・サーバがWebアプリケーション(たとえば、JAVAサーブレットまたはJAVA SERVER PAGE)などの実行可能コードを処理する場合、そのWebアプリケーション内に1つまたは複数の要求ディスパッチが存在する可能性がある。これらの要求ディスパッチは、典型的に、他のサーブレットまたはJAVA SERVER PAGE(JSP)など、実行すべきリソースを指定するinclude()関数呼び出しによって示される。指定されたリソースは、非同期または同期という2通りのモードの一方で実行することができる。同期実行の結果、しばしば、指定のリソース実行が完了するまで実行可能コードのブロッキング(たとえば、中断)が行われ、多くの場合、好ましくない状況になる。さらに、このリソースは追加の要求ディスパッチを含む可能性があり、それによりその他のリソースを実行する可能性があり、その結果、頻繁にWebアプリケーションに相当な待ち時間をもたらす実行チェーンを発生することになる。このため、この待ち時間の結果として、いくつかの不利益が発生する可能性があり、これは非応答アプリケーションあるいは過剰なサーバ負荷またはその両方を含む可能性がある。
このような不利益を克服するための解決策の1つは、指定のリソースに非同期実行モードを使用することである。しかし、非同期実行は、新しいスレッドの確立、出力内のマーカの配置、およびサーバまたはクライアント側の集約のためのマーカの置換などのオーバヘッドをもたらす。多くの場合、このオーバヘッドは待ち時間を倍加する可能性があり、それにより非同期実行によって提供されるパフォーマンス向上を大幅に低減する可能性がある。たとえば、あるリソースの同期実行の結果、10msの待ち時間が発生する可能性があり、同じリソースを非同期的に実行すると、非同期実行によってもたらされるオーバヘッド(たとえば、スレッド・セットアップ・コスト)により20msの待ち時間が発生する可能性がある。
さらに、動的サーバ環境では、同期および非同期リソース実行は、リソース可用性の変化により、様々な結果をもたらす可能性がある。Webアプリケーションは一般にこのような環境に配備されるので、Webアプリケーションはパフォーマンスの変動の影響を受ける。このような問題に対処するために、Web開発者は、しばしば、どの実行モードが最良のパフォーマンス結果をもたらすことができるかについて経験や知識に基づく推測を行う。往々にして、このような推測の結果、最も最適なアプリケーション・パフォーマンスが得られるわけではない。このため、Webアプリケーションを実行する多くのサーバ環境では、リソースの使用状況が非効率的になり、サーバの能力が低減され、それにより、情報技術(IT)インフラストラクチャに不当に負担をかける可能性がある。
本発明の一実施形態は、要求をディスパッチするための方法を含む。この方法では、実行時間中に第1の実行可能コード内で実行すべき要求ディスパッチを識別することができる。要求ディスパッチは固有識別値に関連付けることができる。要求ディスパッチの固有識別値は、実行すべき第2の実行可能コードを識別することができる。第1および第2の実行可能コードは、Webコンテナのコンポーネント内に常駐することができる。Webコンテナは、リソースの包含を可能にする様々な技術のいずれかを使用することができる。たとえば、Webコンテナは、J2EEランタイム環境などのランタイム環境に関連付けることができる。第2の実行可能コードの実行の前に、第2の実行可能コードに関する実行モードを決定することができる。この決定は、パフォーマンス・メトリックおよびしきい値のうちの少なくとも1つを評価することを伴うことができる。しきい値は、ユーザ確立値およびプログラム確立値のうちの少なくとも1つにすることができる。実行モードは、非同期実行モードまたは同期実行モードにすることができる。実行モードの決定に応答して、決定した実行モードの使用に基づいて要求ディスパッチを実行することができる。同期実行モードの結果、第2の実行可能コードの実行が始まる前に、第1の実行可能コードが実行され、実行を完了することができる。非同期実行モードの結果、第1および第2の実行可能コードを同時に実行することができる。
本発明の他の実施形態は、要求をディスパッチするためのシステムを含むことができる。このシステムは、第1の実行可能コードに関連する要求ディスパッチを識別し実行することができるディスパッチ・エンジンを含むことができる。ディスパッチ・エンジンは、ランタイム環境内のトランスポート・チャネル・チェーンのコンポーネントにすることができる。トランスポート・チャネル・チェーンは、オープン・システム間相互接続(OSI)層モデルのトランスポート層に関連付けることができる。ランタイム環境は、リソースの包含をサポートする任意の環境にすることができる。たとえば、一実施形態では、ランタイム環境はJAVA 2 ENTERPRISE EDITION(J2EE)ランタイム環境にすることができる。また、このシステムは、第1の実行可能コードに関連する要求ディスパッチも含むことができる。要求ディスパッチは固有識別値に関連付けることができる。固有識別値は実行すべき固有リソースを識別することができる。要求ディスパッチは、固有リソースの実行をトリガすることができる。固有リソースは第2の実行可能コードを含むことができる。また、このシステムは、要求ディスパッチに関連する少なくとも1つのパフォーマンス・メトリックを含むこともできる。パフォーマンス・メトリックは、要求ディスパッチ実行中に自動的に収集することができる。パフォーマンス・メトリックは、要求ディスパッチの実行挙動を変更するために使用することができる。要求ディスパッチに関連するしきい値、実行モード、およびイベント・ハンドラのうちの少なくとも1つを確立するように構成されたルールセット(ruleset)が存在する可能性がある。しきい値はユーザ確立設定または自動決定値にすることができる。実行モードは同期実行モードまたは非同期実行モードにすることができる。同期実行モードの結果、第1の実行可能コードが第2の実行可能コードとともに順次実行することができ、第1の実行可能コードがその実行を完了するまで第2の実行可能コードは実行することができない。非同期実行モードの結果、第1および第2の実行可能コードが同時に実行することができる。
次に、以下の図面に関連して、一例としてのみ、本発明の好ましい諸実施形態について説明する。
本明細書に開示されている発明的配置の一実施形態により、履歴メトリックを使用して要求ディスパッチに関する実行モードをプログラムによって決定する方法を示す流れ図である。 本明細書に開示されている発明的配置の一実施形態により、履歴メトリックを使用して要求ディスパッチに関する実行モードをプログラムによって決定するための実行可能コード・セグメントおよび通信モデルを示すブロック図である。 本明細書に開示されている発明的配置の一実施形態により、履歴メトリックを使用して要求ディスパッチ実行モードをプログラムによって決定するためのシステムを示すブロック図である。 本明細書に開示されている発明的配置の一実施形態により、履歴メトリックを使用して要求ディスパッチに関する実行モードをプログラムによって決定するための1組のインターフェースを示すブロック図である。
本発明は、履歴メトリックを使用してランタイム中に要求ディスパッチ実行モードをプログラムによって決定するための解決策を提供する。すなわち、要求ディスパッチャは、同期モードおよび非同期モードで要求ディスパッチ(たとえば、include())の処理を自動的かつ知的に切り替えることができる。各要求ディスパッチは、プロセスIDまたはユニフォーム・リソースID(URI)などの固有識別値、履歴メトリック、およびルールセットに関連付けることができる。要求ディスパッチを実行するたびに、履歴メトリックを収集することができる。メトリックとしては、実行持続期間あるいは実行頻度またはその両方、プロセッサ負荷、メモリ使用率、ネットワーク入出力、従属要求ディスパッチの数などを含むことができるが、これらに限定されない。履歴メトリックを使用すると、要求ディスパッチのその後の実行をどちらのモードで実行すべきかを判断するためのルールを構築することができる。たとえば、要求ディスパッチの同期実行持続期間(たとえば、100ms)がユーザ指定持続期間(たとえば、50ms)を超える場合、要求ディスパッチのその後の実行は非同期モードで実行することができる。要求ディスパッチに関連するルールは、適切な実行モードを決定するための1つまたは複数の任意の複雑なルールにすることができる。このため、Webアプリケーションのランタイム最適化をさらに改善することができる。
当業者であれば分かるように、本発明は、システム、方法、またはコンピュータ・プログラム(computer program product)として実施することができる。したがって、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、またはソフトウェアとハードウェアの態様を組み合わせた実施形態の形を取ることができ、いずれも一般に本明細書では「回路」、「モジュール」、または「システム」と呼ぶことができる。さらに、本発明は、その媒体に実施されたコンピュータ使用可能プログラム・コードを有する1つまたは複数の任意の有形表現媒体に実施されたコンピュータ・プログラムの形を取ることができる。
1つまたは複数のコンピュータ使用可能またはコンピュータ可読媒体(複数も可)の任意の組み合わせを使用することができる。コンピュータ使用可能またはコンピュータ可読媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイスにすることができるが、これらに限定されない。コンピュータ可読媒体のより具体的な例(非網羅的リスト)は、1つまたは複数のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ(CDROM)、光学記憶装置、または磁気記憶装置を含むことになるであろう。
コンピュータ可読媒体は、データがデジタルでコード化された形で保持される非一時的記憶媒体にすることができる。コンピュータ可読媒体は、記憶媒体に保管されたデータ内容を入手するためにコンピューティング機器によって抽出可能な情報を保持することができる物理的な有形記憶媒体にすることができる。
本発明の動作を実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++などのオブジェクト指向プログラミング言語あるいは「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで作成することができる。このプログラム・コードは、完全にユーザのコンピュータ上で、一部分はユーザのコンピュータ上で、スタンドアロン・ソフトウェア・パッケージとして、一部分はユーザのコンピュータ上でしかも一部分はリモート・コンピュータ上で、あるいは完全にリモート・コンピュータまたはサーバ上で実行することができる。後者のシナリオでは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意のタイプのネットワークを介してリモート・コンピュータがユーザのコンピュータに接続される場合もあれば、(たとえば、インターネット・サービス・プロバイダを使用してインターネットを介して)外部コンピュータに接続が行われる場合もある。
本発明は、本発明の諸実施形態による方法、装置(システム)、およびコンピュータ・プログラムの流れ図あるいはブロック図またはその両方に関連して以下に記載されている。流れ図あるいはブロック図またはその両方の各ブロックおよび流れ図あるいはブロック図またはその両方内の複数ブロックの組み合わせは、コンピュータ・プログラム命令によって実現可能であることが理解されるであろう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに提供し、コンピュータまたはその他のプログラマブル・データ処理装置のプロセッサにより実行された命令が流れ図あるいはブロック図またはその両方の1つまたは複数のブロックに指定された機能/行為を実現するための手段を作成するようなマシンを生産することができる。
また、これらのコンピュータ・プログラム命令は、コンピュータ可読記憶媒体に保管された命令が流れ図あるいはブロック図またはその両方の1つまたは複数のブロックに指定された機能/行為を実現する命令を含む装置(article of manufacture)を生産するような特定の方法で機能するよう、コンピュータまたはその他のプログラマブル・データ処理装置に指示することができるコンピュータ可読記憶媒体に保管することもできる。
また、コンピュータ・プログラム命令は、コンピュータまたはその他のプログラマブル・データ処理装置上にロードし、コンピュータまたはその他のプログラマブル装置上で実行された命令が流れ図あるいはブロック図またはその両方の1つまたは複数のブロックに指定された機能/行為を実現するためのプロセスを提供するようなコンピュータで実行されるプロセスを生産するように、コンピュータまたはその他のプログラマブル装置上で一連の動作ステップを実行させることもできる。
図1は、本明細書に開示されている発明的配置の一実施形態により、履歴メトリックを使用して要求ディスパッチに関する実行モードをプログラムによって決定する方法100を示す流れ図である。方法100では、アプリケーション・サーバ(たとえば、JAVA 2 ENTERPRISE EDITIONアプリケーション・サーバ)内で実行される識別済み実行可能コード(たとえば、JAVAサーブレット)に関連する要求ディスパッチは、マシンが決定した方法で自動的に実行することができる。履歴メトリックを使用して、ランタイム中に要求ディスパッチ決定を実行し、非同期または同期の実行モードを識別することができる。実行可能コードは、サーブレット、JAVA server pages、JAVA beans、JAVAクラス、ポートレットなどを含むがこれらに限定されないWebアプリケーションの1つまたは複数のコンポーネントにすることができる。たとえば、実行可能コードは、動的Webコンテンツを提供するJava Webアプリケーションにすることができる。
方法100は、システム300などの任意の数の適切なシステムのコンテキスト内で実行することができる。本発明全体を通して、説明の明瞭性および利便性のために、JAVAベースの実現例が提供されている。本発明の範囲はこの点については限定されず、実現技術がリソースの包含をサポートする限り、本明細書に詳述されている発明的配置は様々な技術(非JAVA技術を含む)のいずれかを使用して実現することができる。たとえば、一実施形態では、本明細書に詳述されているように、履歴メトリックを使用して要求ディスパッチに関する実行モードを決定するときに、.NET技術を使用することができる。
本明細書で使用する要求ディスパッチは、開発者が指定したリソースの実行を可能にするプログラムのコマンドを含むことができる。一実施形態(たとえば、JAVAベースのもの)では、要求ディスパッチは、include()およびforward()など、JAVAアプリケーション・プログラミング・インターフェース(API)のメソッドにすることができる。要求ディスパッチは、プロセスID、自動/手動コード注釈、タグ付け、ユニフォーム・リソース・ロケータ(URL)識別、固有パス識別、固有照会ストリングなどを含むがこれらに限定されない1つまたは複数の識別メカニズムを使用して明確に識別することができる。各要求ディスパッチは、アプリケーション・サーバ・パフォーマンスに基づいて最適化要求ディスパッチを可能にする1つまたは複数の履歴メトリックおよび実行モード設定に関連付けることができる。
ステップ105では、Webコンテナ内の実行可能コードを初期設定する。実行可能コードは、Webコンテナ内で実行されるWebアプリケーションにすることができる。Webコンテナは、JAVA仮想マシン(JVM)などのJAVA 2 ENTERPRISE EDITION(J2EE)アプリケーション・サーバ内で実行される1つまたは複数の構成体にすることができる。方法100が実行されるターゲット実現環境および実現選択肢次第で、J2EEアプリケーション・サーバの代わりに.NETサーバなどのその他のサーバを使用することができる。ステップ110では、初期設定された実行可能コードに関連する要求ディスパッチを識別する。識別済みディスパッチは、実行すべき1つまたは複数のリソースに関連付けることができる。このリソースは、サーブレット、1つまたは複数のJAVA SERVER PAGE(JSP)Webページなどの1つまたは複数の実行可能コード・オブジェクトにすることができる。ステップ115では、識別済みディスパッチについてメトリックが存在する場合、この方法はステップ120に進むことができ、さもなければステップ155に移行することができる。識別済みディスパッチに関連するメトリックは1つまたは複数の履歴メトリックにすることができる。メトリックとしては、実行持続期間あるいは実行頻度またはその両方、複雑さ、プロセッサ負荷、メモリ使用率、ネットワーク入出力、従属識別済みディスパッチの数などを含むことができるが、これらに限定されない。たとえば、メトリックは、決定された期間における識別済みディスパッチの平均実行持続期間を含むことができる。さらに、識別済みディスパッチの各実行モードに関するメトリックを追跡し、最適意思決定機能を可能にすることができる。すなわち、Webアプリケーションに関するデフォルト設定を確立するために、非同期実行モードおよび同期実行モードに関するメトリックの評価を実行することができる。
ステップ120では、識別済みディスパッチに関する履歴メトリックが前に確立したしきい値を超える場合、この方法はステップ125に進むことができ、さもなければステップ140に移行することができる。たとえば、しきい値は実行持続期間などのタイミング値にすることができる。一実施形態では、どちらのモードで識別済みディスパッチを実行すべきかを判断するために、履歴実行時間およびしきい値を数値的に比較することができる。しきい値が存在しない事例では、「最良推測」手法を使用して識別済みディスパッチを実行することができる。たとえば、同様のディスパッチを分析することにより、しきい値をプログラムによって導出し、識別済みディスパッチの知的実行を可能にすることができる。ステップ125では、ディスパッチ・イベントをイベント・ハンドラに登録する。ステップ130では、非ブロッキング・コード実行を含むことができる非同期モードで識別済みディスパッチを実行する。すなわち、Webアプリケーションは、識別済みディスパッチと同時に実行し続けることができる。ステップ135では、識別済みディスパッチに関するメトリックを収集することができる。パフォーマンス・モニター・エージェントなどの1つまたは複数のメトリック収集コンポーネントを使用して、メトリックを収集することができる。パフォーマンス・モニター・エージェントとしては、負荷モニター、実行可能コード最適化ツールなどを含むことができるが、これらに限定されない。
ステップ140では、識別済みディスパッチを同期モードで実行することができる。ステップ147では、識別済みディスパッチについてメトリックを収集することができる。ステップ147では、識別済みディスパッチについてメトリック・データを収集することができる。一実施形態では、メトリック・データは、識別済みディスパッチのブロッキング持続期間を含むことができる。ステップ150では、識別済みディスパッチ実行が完了した場合、この方法はステップ157に進むことができ、さもなければこの方法はステップ140に戻ることができる。
ステップ155では、デフォルト設定を使用して識別済みディスパッチを実行し、このディスパッチに関連するメトリックを収集することができる。ステップ157では、履歴メトリックに基づいて、任意選択でしきい値を変更することができる。たとえば、変更としては、時間の経過につれてしきい値を増加/減少することを含むことができる。すなわち、履歴メトリックを収集するにつれて、ランタイム・パフォーマンスは継続的に改善することができる。ステップ160では、実行可能コードに関連するより多くのディスパッチが処理に使用可能である場合、この方法はステップ110に戻ることができ、さもなければステップ165に進むことができる。ステップ165では、実行可能コードの実行を終了することができる。
方法100の開示された諸ステップはいずれの点でも本発明を限定するものと解釈してはならないことを認識されたい。方法100は連続的にリアルタイムで実行することができ、アプリケーション・サーバ・リソースの可用性が変動するにつれて各実行可能コードを動的に最適化することができる。しかし、パフォーマンスを低減する可能性のあるディスパッチの過剰最適化を回避するために、方法100によって各要求を任意選択で静的に決定することができる。一実施形態では、方法100は、コンピューティング・リソースを最小限にすることができる間隔で実行することができる。
図2は、本明細書に開示されている発明的配置の一実施形態により、履歴メトリックを使用して要求ディスパッチに関する実行モードをプログラムによって決定するための実行可能コード・セグメント210および通信モデル230を示すブロック図である。ある事例では、実行可能コード・セグメント210はJAVAソース・コード・ファイルにすることができる。ここではその他の(非JAVA)技術に基づくその他のタイプのセグメント210を使用することができ、どの特定の実装言語とも無関係なものとして解釈すべき概念を表すために,本明細書ではJAVAベースの例が使用されている。実行可能コード・セグメント210では、要求ディスパッチ・アプリケーション・プログラミング・インターフェース(API)212により、使用可能リソース、パフォーマンス履歴などを含むがこれらに限定されない1つまたは複数の条件に基づいて、最適化した方法で要求ディスパッチを自動的に実行することができる。一実施形態では、API212は、既存の要求ディスパッチャをカプセル化するラッパ・クラスにすることができる。他の実施形態では、API212は、伝統的な要求ディスパッチャへの「ドロップイン」置換にすることができる。すなわち、既存の実行可能コードは、API212のパフォーマンス上の恩恵を獲得している間、未変更のままになる可能性がある。一実施形態では、要求ディスパッチャ244は、要求ディスパッチの透明な動的モード実行を可能にするトランスポート・チャネル・チェーン240のコンポーネントにすることができる。
API212を使用すると、アプリケーション開発者は、使用可能コンピューティング・リソースに基づいて要求ディスパッチ214をランタイムにおいて最適実行モードで処理することができる。一実施形態では、API212は、IBM WEBSPHEREというWebコンテナ・プラットフォームのコンポーネントにすることができる。たとえば、アプリケーション開発者は、1つまたは複数のインポート・ディレクティブ(たとえば、「import com.ibm.Websphere.Webcontainer.RequestDispatch」)を介して要求ディスパッチ機能にアクセスすることができる。要求ディスパッチ214は、実行のカスタマイズを可能にするために1つまたは複数のパラメータを含むことができる。一実施形態では、引数(たとえば、auto、500ms)により、アプリケーション開発者は要求ディスパッチ挙動の一部分を制御することができる。さらに、API212は、要求ディスパッチをネイティブに管理しモニターするための機能を可能にし、開発者が実行コードおよびランタイム環境の制御を維持できるようにすることができる。
一実施形態では、要求ディスパッチャ244は、オープン・システム間相互接続モデル230のトランスポート層232内に常駐することができる。ディスパッチャ244は、適切なWebコンテナ242に対するHTTP246の要求を透過的に受信しディスパッチすることができる。このため、ディスパッチャ244は、配備されたアプリケーションおよびアプリケーション制限とは無関係に機能することができる。
本明細書に提示されている図面は、例示のためのものであり、いずれの点でも本発明を限定するものと解釈してはならない。一実施形態では、要求ディスパッチ構文が伝統的な構文と同一になり得るように、API212はアプリケーション開発者にとって透過的なものにすることができる。さらに、API212は、Webアプリケーションに対して自動的に機能を提供する基本パッケージのコンポーネントにすることができる。すなわち、アプリケーション開発者は、API212の機能を手動でインポートする必要はない。
図3は、本明細書に開示されている発明的配置の一実施形態により、履歴メトリックを使用して要求ディスパッチ実行モードをプログラムによって決定するためのシステム300を示すブロック図である。システム300では、要求ディスパッチャ340により、サーブレット324に関連するディスパッチ326を自動決定モードで実行することができる。このプログラム決定モードは、同期実行モードおよび非同期実行モードにすることができる。一実施形態では、自動決定実行モードは伝統的な方法で実行することができる。すなわち、ディスパッチャ340の機能を可能にするために、ディスパッチ挙動あるいはオーバヘッドまたはその両方の変更はまったく不要である。一実施形態では、エンジン342は、要求ディスパッチ326のその後の実行のための実行モードを自動的に決定することができる。このため、ディスパッチ326の各インスタンスは、サーバ320のリソース可用性に応答して、同期または非同期モードで実行することができる。
本明細書で使用する各サーブレット324は、要求ディスパッチ326を介して1つまたは複数の実行可能リソースに関連付けることができる。サーブレット324は、JAVA 2 ENTERPRISE EDITION(J2EE)アプリケーション・サーバ320(または、企図された他の諸実施形態ではその他のタイプのサーバ)のWebコンテナ323内で実行することができる。Webコンテナ323は、JAVA仮想マシン・ランタイム環境などの動的ランタイム環境にすることができる。たとえば、サーブレット324は、ブラウザ・インターフェース312内で要求側クライアント310に対してWebベースのコンテンツ(たとえば、Webページ)を提示可能なWebアプリケーションにすることができる。各要求ディスパッチ326は、プロセスIDもしくは固有キーあるいはリソースID(たとえば、ユニフォーム・リソース・ロケータ)またはその両方などの固有識別値に関連付けることができる。一実施形態では、固有キーは自動生成値(たとえば、ディスパッチ・エンジン342による)または手動決定値にすることができる。ある事例では、固有識別値は注釈(またはソース・コード・コメント)として保管することができ、これはコンパイル時に抽出することができる。
サーブレット324は、要求ディスパッチ326の実行をトリガすることができる要求380を受信することができる。要求ディスパッチ326がランタイム環境323によって検出されると、ディスパッチ326を分析して、ユーザ指定のリソースIDに基づいてどのリソースを実行すべきかを判断することができる。一実施形態では、ディスパッチャ340は、指定のリソースの実行について、異なるWebコンテナ内で実行されるサーブレットなどの他のランタイム環境と交渉することができる。
要求ディスパッチャ340は、1つまたは複数のルール346あるいは設定またはその両方に基づいて、ディスパッチ326を明確に識別し実行することができる。すなわち、ディスパッチャ340は、サーバ320のリソース可用性(たとえば、サーバ負荷)に適合するように構成することができる。要求ディスパッチャ340は、ディスパッチ・エンジン342と、メトリック・エンジン343と、パフォーマンス・モニター344と、ルール346と、インターフェース352とを含むことができる。一実施形態では、ディスパッチャ340は、Webコンテナ323に対するプラグ可能拡張部分にすることができる。設定348は、ユーザ確立設定または自動決定設定にすることができる。たとえば、ディスパッチに関するデフォルト・タイムアウト値は、サーブレット324のパフォーマンスに基づいて動的に決定することができる。
ディスパッチ・エンジン342は、ディスパッチ326を処理し、履歴メトリック350を使用して適切な実行モードをプログラムによって決定することができる。エンジン342は、ディスパッチ326に関連するローカルおよびリモート・リソースの識別あるいは実行またはその両方を担当することができる。リソース処理がリモートで実行される事例では、エンジン342は、その処理を実行できるリモート・プロセッサに要求を転送することができる。リソース処理がローカルで実行される事例では、エンジン342は要求ディスパッチ326を管理することができる。
メトリック・エンジン343は、サーブレット324あるいはディスパッチ326またはその両方に関連する履歴メトリックを収集することができる。たとえば、高レベル・メトリックを入手することができるサーブレット324レベルでメトリックを収集することができる。ある事例では、メトリック・エンジン343は、リアルタイムでまたはほぼリアルタイムでメトリックを収集することができる。たとえば、エンジン343は、最後のY秒にわたり最後のX個のディスパッチ326を追跡するように構成することができ、XおよびYはユーザが構成可能である。さらに、メトリック・エンジン343は、インターフェース352を介して提示可能なWebコンテナ323のリアルタイム・パフォーマンスをモニターするために使用することができる。
履歴メトリック350は、待ち時間、実行モード、およびメモリ使用率などのリソース情報を含むことができる。履歴メトリック350は、各ディスパッチ326の実行に関連付けることができる。一実施形態では、各モード(たとえば、非同期および同期)に関するメトリックを計算して、各モードに関する集約メトリックの評価を可能にすることができる。このように、エンジン343は、実行の前にディスパッチ326に関する適切な実行モードを計算することができる。他の実施形態では、ディスパッチ326に関連するメトリック350は、まとめて集約し、ルールセット360内のしきい値(たとえば、ルール360)に対して評価することができる。たとえば、非同期実行に関連するメモリ・コストをメモリ割り当て値(たとえば、しきい値)と比較して、非同期実行のオーバヘッドが最適選択肢であるかどうかを判断することができる。他の事例では、非同期コンテキストをセットアップ/破壊するための時間のオーバヘッドを前に確立したしきい値と比較して、どちらのモード(非同期または同期)を使用すべきかを判断することができる。
ルールセット346は、ディスパッチ326の実行モードを決定するための1つまたは複数の任意に複雑なルールで構成することができる。ルールセット346は、ユーザが確立することができるか、あるいはヒューリスティックに決定することができるか、またはその両方を行うことができる。一実施形態では、複数のメトリックをまとめて評価して、実行モードを決定することができる。ルールセット346は、しきい値、実行モード、要求ディスパッチに関連するイベント・ハンドラなどを含むことができるが、これらに限定されない。たとえば、しきい値はユーザ確立設定または自動決定値にすることができる。ルールセット346は、応答382を準備するために使用することができる、使用すべき集約のタイプ(たとえば、サーバ側対クライアント側)をさらに指定することができる。ディスパッチ326の実行が完了すると、応答382を生成し、ネットワーク370を介してクライアント310に伝達することができる。
本明細書に提示されている図面は、例示のためのものであり、いずれの点でも本発明を限定するものと解釈してはならない。システム300は、分散コンピューティング環境、ネットワーク・コンピューティング環境、サービス指向アーキテクチャ(SOA)などの1つまたは複数のコンポーネントにすることができる。一実施形態では、システム300は、IBM WEBSPHEREアプリケーション・サーバの1つまたは複数のコンポーネントにすることができる。他の実施形態では、システム300は、.NETフレームワーク(または本明細書に記載されている目的のためにリソースを含むことができる任意の他のフレームワーク)の1つまたは複数のコンポーネントを含むことができる。
図4は、本明細書に開示されている発明的配置の一実施形態により、履歴メトリックを使用して要求ディスパッチに関する実行モードをプログラムによって決定するための1組のインターフェース410、440を示すブロック図である。インターフェース410、440は、システム300のコンテキストで提示することができる。インターフェース410では、Webコンテナ内で実行される1つまたは複数のWebアプリケーションに関連する要求ディスパッチはセクション412に提示することができる。Webアプリケーションは、JAVAサーブレット、JAVA SERVER PAGES(JSP)などの1つまたは複数の実行可能コード・エンティティにすることができる。インターフェース440では、要求ディスパッチ414に関連するメトリックを提示することができる。
一実施形態では、要求ディスパッチおよびメトリック442の提示はリアルタイムで行うことができ、実行スナップショットを容易に入手できるようになる。
インターフェース410は、1つまたは複数の実行中の要求ディスパッチおよび従属要求ディスパッチの管理を可能にすることができる。インターフェース410は、セクション412、420と、対話式インターフェース・エレメント422、430、432とを含むことができる。インターフェース410では、要求ディスパッチ414に関連する情報をセクション412内に提示することができる。要求ディスパッチ情報は、プロセスID、実行持続期間、実行モードなどを含むことができるが、これらに限定されない。たとえば、セクション412は、サーブレットAに関連する各要求ディスパッチと従属ディスパッチを提示することができる。一実施形態では、管理者は要求ディスパッチのグループを選択的に管理することができる。インターフェース410は、アクティブ・ルール、パフォーマンス・メトリックなどの追加情報を提示することができる。
選択された要求ディスパッチ414に関連する情報はセクション420に提示することができる。たとえば、インターフェース・エレメント430と対話することにより、ディスパッチ要求に関連する情報を提示することができる。ある事例では、セクション420は、タイムアウト値、実行モードなどの要求ディスパッチ値の変更を可能にすることができる。すなわち、自動最適化が不成功であると判明したときに、要求ディスパッチのリアルタイム手動最適化を達成することができる。一実施形態では、インターフェース410はスレッド管理機能を可能にすることができる。たとえば、インターフェース・エレメント432により、選択された要求ディスパッチを終了することができる。インターフェース・エレメント422との対話により、検査インターフェース440を提示することができる。
インターフェース440は、選択された要求ディスパッチ414に関連するメトリックを提示することができるセクション442を含むことができる。セクション442は、プロセッサ使用率、実行持続期間、およびメモリ使用率などの履歴メトリックを含むことができる。たとえば、セクション442は、収集した履歴メトリックを使用して、要求ディスパッチの平均リソース負荷を提示することができる。一実施形態では、履歴メトリックは複数レベルの細分性で提示することができる。たとえば、履歴メトリックは、日、週、月などの単位で提示することができる。
本明細書に提示されている図面は、例示のためのものであり、いずれの点でも本発明を限定するものと解釈してはならない。一実施形態では、インターフェース410、440は、JAVA 2 ENTERPRISE EDITION最適化ツールの1つまたは複数の画面にすることができる。他の実施形態では、インターフェース410、440は統合開発環境(IDE)のコンポーネントにすることができる。インターフェース410、440は、グラフィカル・ユーザ・インターフェース(GUI)、音声ユーザ・インターフェース(VUI)、マルチモード・インターフェイスなどにすることができる。インターフェース410、440に関連するインターフェース・エレメントは、対話式ボタン、ドロップダウン・メニュー、無線選択エレメントなどを含むことができるが、これらに限定されない。
本明細書で使用する用語は、特定の諸実施形態を記述するためのものであり、本発明を限定するためのものではない。本明細書で使用する単数形「a」、「an」、および「the」は、文脈が明確に他の指示を示さない限り、複数形も含むものである。「comprises」あるいは「comprising」という用語またはその両方は、本明細書で使用する場合、明記された特徴、整数、ステップ、操作、要素、あるいはコンポーネント、またはこれらの組み合わせの存在を指定するものであるが、1つまたは複数のその他の特徴、整数、ステップ、操作、要素、コンポーネント、あるいはそのグループ、またはこれらの組み合わせの存在または追加を排除するものではないことがさらに理解されるであろう。
以下の特許請求の範囲に記載されたすべての手段またはステップならびに機能要素に対応する構造体、材料、行為、および同等のものは、具体的に請求されたその他の請求要素と組み合わせてその機能を実行するための任意の構造体、材料、または行為を含むためのものである。本発明の説明は、例示および解説のために提示されたものであり、網羅するためまたは開示された形式に本発明を限定するためのものではない。多くの変更および変形は、本発明の範囲を逸脱せずに当業者にとって明白になるであろう。この実施形態は、本発明の原理および実用的な適用例を最も良く説明するため、ならびにその他の当業者が企図された特定の用途に適した様々な変更を含む様々な実施形態について本発明を理解できるようにするために、選択され記載されたものである。
図1〜図4内の流れ図およびブロック図は、本発明の様々な諸実施形態によるシステム、方法、およびコンピュータ・プログラムについて可能な実現例のアーキテクチャ、機能、および動作を例示している。この点に関しては、流れ図またはブロック図内の各ブロックは、指定の論理機能(複数も可)を実現するための1つまたは複数の実行可能命令を含む、コードのモジュール、セグメント、または一部分を表すことができる。また、いくつかの代替実現例では、ブロック内に示された機能は図面内に示された順序から外れて行われる可能性があることにも留意されたい。たとえば、連続して示されている2つのブロックは、関係する機能に応じて、実際にはほぼ同時に実行される場合もあれば、ときには逆の順序で実行される場合もある。また、ブロック図あるいは流れ図またはその両方の各ブロックおよびブロック図あるいは流れ図またはその両方内の複数ブロックの組み合わせは、指定の機能または行為を実行する特殊目的ハードウェアベースのシステムあるいは特殊目的ハードウェアとコンピュータ命令との組み合わせによって実現可能であることも留意されるであろう。

Claims (19)

  1. 要求をディスパッチするための方法であって、
    実行時間中に第1の実行可能コード内で実行すべき要求ディスパッチを識別することであって、前記要求ディスパッチが識別値に関連付けられ、前記要求ディスパッチの前記識別値が実行すべき第2の実行可能コードを識別することと、
    前記第2の実行可能コードの実行の前に、前記第2の実行可能コードを実行するための実行モードを決定することであって、前記決定アクションがパフォーマンス・メトリックおよびしきい値を評価することを含み、前記しきい値がユーザ確立値およびプログラム確立値のうちの少なくとも1つであり、前記実行モードが非同期実行モードまたは同期実行モードであり、前記パフォーマンス・メトリックが前記要求ディスパッチの過去の実行の度に収集されたものであることと、
    前記実行モードの前記決定に応答して、前記実行モードに基づいて前記要求ディスパッチを実行することであって、前記同期実行モードの結果、前記第1の実行可能コードが停止し、前記第2の実行可能コードが開始して完了し、その後、前記停止した第1の実行可能コードが実行を再開し、前記非同期実行モードの結果、前記第1および第2の実行可能コードが同時に実行されることと、
    前記要求ディスパッチの実行時にパフォーマンス・メトリックを収集すること
    を含み、
    前記要求ディスパッチは、前記パフォーマンス・メトリックが前記しきい値を超え損なったときに、同期的に実行され、前記パフォーマンス・メトリックが前記しきい値を超えたときに、非同期的に実行される、方法。
  2. 前記第1および第2の実行可能コードがWebコンテナのコンポーネント内に常駐し、前記Webコンテナがランタイム環境に関連付けられる、請求項1記載の方法。
  3. 前記要求ディスパッチに関連する前記固有識別値が、自動生成固有識別値、ユニフォーム・リソースID(URI)、固有パス値、および固有照会ストリングのうちの少なくとも1つである、請求項1記載の方法。
  4. 前記第1および第2の実行可能コードの前記実行モードがその後の実行中に動的に調整することができ、前記第1および第2の実行可能コードが、JAVAサーブレット、JAVA SERVER PAGE(JSP)、JAVA BEAN、およびJAVA対応ポートレットのうちの少なくとも1つである、請求項1記載の方法。
  5. 前記実行モードを決定することが、
    要求ディスパッチおよびその実行時間の履歴データを使用して前記パフォーマンス・メトリックを構築すること
    をさらに含む、請求項1記載の方法。
  6. 前記要求ディスパッチを実行することが、
    前記要求ディスパッチの前記実行パフォーマンスに応答して、前記要求ディスパッチに関連するモード設定を第1の実行モードから第2の実行モードにトグル切り替えすることであって、前記モード設定が前記要求ディスパッチを実行すべき前記モードを示し、前記モードが非同期実行モードおよび同期実行モードのうちの少なくとも1つであり、前記トグル切り替えアクションの結果、前記要求ディスパッチの前記その後の実行が前記第2の実行モードで実行されること
    をさらに含む、請求項1記載の方法。
  7. 前記パフォーマンス・メトリックが、前記要求ディスパッチの前記実行に関連するタイミング情報のうちの少なくとも1つである、請求項1記載の方法。
  8. 前記要求ディスパッチの前記実行中に要求ディスパッチャに関連する少なくとも1つのパフォーマンス・メトリックをプログラムによって収集することであって、前記パフォーマンス・メトリックがリソース割り振り値であること
    をさらに含む、請求項1記載の方法。
  9. 既存のディスパッチAPIの機能を透過的にカプセル化することであって、前記既存のディスパッチAPIが要求ディスパッチを同期実行モードで実行し、前記カプセル化により前記要求ディスパッチを非同期的または同期的に実行できること
    をさらに含む、請求項1記載の方法。
  10. 要求をディスパッチするためのシステムであって、
    第1の実行可能コードに関連する要求ディスパッチを識別し実行することができるディスパッチ・エンジンであって、前記ディスパッチ・エンジンがランタイム環境内のトランスポート・チャネル・チェーンのコンポーネントであり、前記トランスポート・チャネル・チェーンがオープン・システム間相互接続(OSI)層モデルのトランスポート層に関連付けられる、ディスパッチ・エンジンと、
    前記第1の実行可能コードに関連する要求ディスパッチであって、前記要求ディスパッチが固有識別値に関連付けられ、前記固有識別値が実行すべき固有リソースを識別し、前記要求ディスパッチが前記固有リソースの前記実行をトリガし、前記固有リソースが第2の実行可能コードである、要求ディスパッチと、
    前記要求ディスパッチに関連するパフォーマンス・メトリックであって、前記パフォーマンス・メトリックが前記要求ディスパッチの過去の実行の度に自動的に収集されたものであり、前記パフォーマンス・メトリックが前記要求ディスパッチの実行挙動を変更するために使用される、パフォーマンス・メトリックと、
    前記要求ディスパッチに関連するしきい値、実行モード、およびイベント・ハンドラのうちの少なくとも1つを確立するように構成されたルールセットであって、前記しきい値がユーザ確立設定および自動決定値のうちの少なくとも1つであり、前記実行モードが同期実行モードおよび非同期実行モードのうちの少なくとも1つであり、前記同期実行モードの結果、前記第1の実行可能コードが停止し、前記第2の実行可能コードが開始して完了し、その後、前記停止した第1の実行可能コードが実行を再開し、前記非同期実行モードの結果、前記第1および第2の実行可能コードが同時に実行される、ルールセットと
    を含み、
    前記要求ディスパッチは、前記パフォーマンス・メトリックが前記しきい値を超え損なったときに、同期的に実行され、前記パフォーマンス・メトリックが前記しきい値を超えたときに、非同期的に実行される、システム。
  11. 前記要求ディスパッチに関連する前記固有識別値が、自動生成固有識別値、ユニフォーム・リソースID(URI)、固有パス値、および固有照会ストリングのうちの少なくとも1つである、請求項10記載のシステム。
  12. 固有要求ディスパッチを識別し、前記識別済み要求ディスパッチ・パフォーマンスをモニターするように構成されたパフォーマンス・モニターであって、前記識別およびモニターがリアルタイムで実行される、パフォーマンス・モニター
    をさらに含む、請求項10記載のシステム。
  13. 前記システムのユーザ・カスタマイズを可能にするユーザ・インターフェースであって、カスタマイズがユーザ確立しきい値、ユーザ確立パフォーマンス・メトリック、およびユーザ確立実行モードのうちの少なくとも1つである、ユーザ・インターフェース
    をさらに含む、請求項10記載のシステム。
  14. 前記ディスパッチ・エンジンが、少なくとも1つのパフォーマンス・メトリックに応答して、前記しきい値を変更することができる、請求項10記載のシステム。
  15. コンピュータ使用可能プログラム・コードがそれにより実施されたコンピュータ可読記憶媒体を含むコンピュータ・プログラムであって、前記コンピュータ使用可能プログラム・コードが、
    実行時間中に第1の実行可能コード内で実行すべき要求ディスパッチを識別するように動作可能な有形記憶媒体に保管されたコンピュータ使用可能プログラム・コードであって、前記要求ディスパッチが固有識別値に関連付けられ、前記要求ディスパッチの前記固有識別値が実行すべき第2の実行可能コードを識別する、コンピュータ使用可能プログラム・コードと、
    前記第2の実行可能コードの実行の前に、前記第2の実行可能コードを実行するための実行モードを決定するように動作可能な有形記憶媒体に保管されたコンピュータ使用可能プログラム・コードであって、前記決定アクションがパフォーマンス・メトリックおよびしきい値を評価することを含み、前記しきい値がユーザ確立値およびプログラム確立値のうちの少なくとも1つであり、前記実行モードが非同期実行モードまたは同期実行モードであり、前記パフォーマンス・メトリックが前記要求ディスパッチの過去の実行の度に収集されたものである、コンピュータ使用可能プログラム・コードと、
    前記決定アクションに応答して、前記実行モードに基づいて前記要求ディスパッチを実行するように動作可能な有形記憶媒体に保管されたコンピュータ使用可能プログラム・コードであって、前記同期実行モードの結果、前記第1の実行可能コードが停止し、前記第2の実行可能コードが開始して完了し、その後、前記停止した第1の実行可能コードが実行を再開し、前記非同期実行モードの結果、前記第1および第2の実行可能コードが同時に実行される、コンピュータ使用可能プログラム・コードと、
    前記要求ディスパッチの実行時にパフォーマンス・メトリックを収集する、コンピュータ使用可能プログラム・コードと
    を含み、
    前記要求ディスパッチは、前記パフォーマンス・メトリックが前記しきい値を超え損なったときに、同期的に実行され、前記パフォーマンス・メトリックが前記しきい値を超えたときに、非同期的に実行される、コンピュータ・プログラム。
  16. 前記第1および第2の実行可能コードがWebコンテナのコンポーネント内に常駐し、前記Webコンテナがランタイム環境に関連付けられる、請求項15記載のコンピュータ・プログラム。
  17. 前記要求ディスパッチに関連する少なくとも1つのパフォーマンス・メトリックを識別するように動作可能な有形記憶媒体に保管されたコンピュータ使用可能プログラム・コードであって、前記パフォーマンス・メトリックが履歴メトリックであり、前記履歴メトリックが前記要求ディスパッチの履歴実行の少なくとも1つのプロパティを示す統計値である、コンピュータ使用可能プログラム・コード
    をさらに含む、請求項15記載のコンピュータ・プログラム。
  18. 前記要求ディスパッチの前記実行パフォーマンスに応答して、前記要求ディスパッチに関連するモード設定を第1の実行モードから第2の実行モードにトグル切り替えするように動作可能な有形記憶媒体に保管されたコンピュータ使用可能プログラム・コードであって、前記モード設定が前記要求ディスパッチを実行すべき前記モードを示し、前記モードが非同期実行モードおよび同期実行モードのうちの少なくとも1つであり、前記トグル切り替えアクションの結果、前記要求ディスパッチの前記その後の実行が前記第2の実行モードで実行される、コンピュータ使用可能プログラム・コード
    をさらに含む、請求項15記載のコンピュータ・プログラム。
  19. 前記要求ディスパッチの前記実行中に要求ディスパッチャに関連する少なくとも1つのパフォーマンス・メトリックを収集するように動作可能な有形記憶媒体に保管されたコンピュータ使用可能プログラム・コードであって、前記パフォーマンス・メトリックがリソース割り振り値である、コンピュータ使用可能プログラム・コードをさらに含む、請求項15記載のコンピュータ・プログラム。
JP2012555374A 2010-03-01 2011-02-28 要求をディスパッチするための方法、システム、およびコンピュータ・プログラム Expired - Fee Related JP5963682B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/715,139 2010-03-01
US12/715,139 US8296411B2 (en) 2010-03-01 2010-03-01 Programmatically determining an execution mode for a request dispatch utilizing historic metrics
PCT/EP2011/052883 WO2011107415A1 (en) 2010-03-01 2011-02-28 Programmatically determining an execution mode for a request dispatch utilizing historic metrics

Publications (2)

Publication Number Publication Date
JP2013521552A JP2013521552A (ja) 2013-06-10
JP5963682B2 true JP5963682B2 (ja) 2016-08-03

Family

ID=44141933

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012555374A Expired - Fee Related JP5963682B2 (ja) 2010-03-01 2011-02-28 要求をディスパッチするための方法、システム、およびコンピュータ・プログラム

Country Status (6)

Country Link
US (2) US8296411B2 (ja)
JP (1) JP5963682B2 (ja)
CN (1) CN102782652B (ja)
DE (1) DE112011100739T8 (ja)
GB (1) GB2486852B (ja)
WO (1) WO2011107415A1 (ja)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9727397B2 (en) * 2007-07-23 2017-08-08 Paypal, Inc. Container-less JSP template
US9921934B1 (en) * 2011-10-14 2018-03-20 Amazon Techologies, Inc. Storage process metrics
DE102012009482B4 (de) 2012-05-12 2020-06-25 Volkswagen Aktiengesellschaft Funktional erweiterbares Fahrzeugsteuergerät und Verfahren zum Ergänzen der Funktionalität eines Fahrzeugsteuergeräts
US9323588B2 (en) 2013-03-14 2016-04-26 Comcast Cable Communications, Llc Service platform architecture
RU2568292C2 (ru) * 2013-12-27 2015-11-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ выбора синхронного или асинхронного межпроцессного взаимодействия
US9961011B2 (en) 2014-01-21 2018-05-01 Oracle International Corporation System and method for supporting multi-tenancy in an application server, cloud, or other environment
US10084843B2 (en) * 2014-07-14 2018-09-25 Oracle Internatonal Corporation System and method for web container partitions in a multitenant application server environment
US10567476B2 (en) 2014-10-30 2020-02-18 Amazon Technologies, Inc. Rule-based action triggering in a provider network
US10397128B2 (en) * 2014-10-30 2019-08-27 Amazon Technologies, Inc. Routing handler for rule-based action triggering
KR101999458B1 (ko) * 2014-10-30 2019-07-11 아마존 테크놀로지스, 인크. 제공자 네트워크에서의 규칙 기반 트리거들 중 특정한 하나의 트리거
US20160283566A1 (en) * 2015-03-27 2016-09-29 Ca, Inc. Analyzing sorted mobile application operational state sequences based on sequence metrics
US10158709B1 (en) 2015-06-19 2018-12-18 Amazon Technologies, Inc. Identifying data store requests for asynchronous processing
US9846608B2 (en) * 2015-08-25 2017-12-19 Ca, Inc. Providing application operational insights to users based on crowd sourced performance metrics for operational states
US9715421B2 (en) * 2015-08-25 2017-07-25 Ca, Inc. Wrapped applications providing operational insight to users based on rules for acceptable operational state performance
US10108448B2 (en) * 2015-10-27 2018-10-23 International Business Machines Corporation Dynamic SMT
US10733591B2 (en) * 2016-10-11 2020-08-04 International Business Machines Corporation Tiered model for event-based serverless computing
CN108345481B (zh) * 2017-01-22 2023-04-18 腾讯科技(深圳)有限公司 一种页面显示方法、装置、客户端及服务器
CN107957903B (zh) * 2017-11-13 2020-11-10 中国平安财产保险股份有限公司 异步任务调度方法、服务器及存储介质
US11477217B2 (en) 2018-09-18 2022-10-18 Cyral Inc. Intruder detection for a network
US11606358B2 (en) 2018-09-18 2023-03-14 Cyral Inc. Tokenization and encryption of sensitive data
US11477197B2 (en) 2018-09-18 2022-10-18 Cyral Inc. Sidecar architecture for stateless proxying to databases
JP2020170331A (ja) * 2019-04-03 2020-10-15 富士ゼロックス株式会社 情報処理装置及びプログラム
US11789642B2 (en) * 2021-06-28 2023-10-17 Micron Technology, Inc. Loading data from memory during dispatch
CN116503138B (zh) * 2023-05-04 2023-10-31 杭州妙壹科技有限公司 一种基于异步编程的话费充值订单调度方法与系统

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU646247B2 (en) * 1990-03-19 1994-02-17 Fujitsu Limited Interrupt processing system
US5329619A (en) * 1992-10-30 1994-07-12 Software Ag Cooperative processing interface and communication broker for heterogeneous computing environments
US5675771A (en) * 1993-09-28 1997-10-07 Bull Hn Information Systems Inc. Mechanism for enabling emulation system users to directly invoke a number of host system facilities for executing host procedures either synchronously or asynchronously in a secure manner through automatically created shell mechanisms
JPH08123699A (ja) * 1994-10-26 1996-05-17 Hitachi Ltd 並行処理方法、並行処理システム及び並行処理用プログラムの変換ツール
US6401005B1 (en) * 1999-09-27 2002-06-04 Rockwell Automation Technologies, Inc. Programmable synchronous and asynchronous block execution for a computer numerical control
US7496924B2 (en) * 2000-03-27 2009-02-24 Siemens Communications, Inc. Dispatching messages among registered software modules in telecommunications system including telephony internet server coupled between packet network and PBX
US20020032692A1 (en) * 2000-09-08 2002-03-14 Atsuhito Suzuki Workflow management method and workflow management system of controlling workflow process
US7099939B2 (en) * 2000-10-03 2006-08-29 Sun Microsystems Inc. HTTP transaction monitor with sequence replay capacity
EP1347390A4 (en) * 2000-12-28 2009-04-08 Future System Consulting Corp STRUCTURAL SYSTEM
US7043460B2 (en) * 2001-05-31 2006-05-09 International Business Machines Corporation Web browser-based object oriented application component test client
US7099935B2 (en) * 2001-10-01 2006-08-29 International Business Machines Corporation Dynamically determining whether to process requests synchronously or asynchronously
US6886041B2 (en) * 2001-10-05 2005-04-26 Bea Systems, Inc. System for application server messaging with multiple dispatch pools
US7003570B2 (en) 2001-10-05 2006-02-21 Bea Systems, Inc. System for integrating java servlets with asynchronous messages
US7996507B2 (en) * 2002-01-16 2011-08-09 International Business Machines Corporation Intelligent system control agent for managing jobs on a network by managing a plurality of queues on a client
US20040015762A1 (en) * 2002-07-22 2004-01-22 Finisar Corporation Scalable system testing tools
US7444620B2 (en) * 2003-02-28 2008-10-28 Bea Systems, Inc. Systems and methods for a common runtime container framework
US7568021B2 (en) 2004-05-21 2009-07-28 Intel Corporation Hybrid mode network stack under EFI/Tiano based BIOS in modular computing environment
US8762981B2 (en) * 2004-05-24 2014-06-24 Sap Ag Application loading and visualization
US20060026214A1 (en) * 2004-07-29 2006-02-02 International Business Machines Corporation Switching from synchronous to asynchronous processing
CN1734428A (zh) * 2004-08-02 2006-02-15 微软公司 基于事务性能模型的自动配置
US7779430B2 (en) * 2004-12-15 2010-08-17 International Business Machines Corporation Method, system, and article of manufacture for providing service components
US7716335B2 (en) * 2005-06-27 2010-05-11 Oracle America, Inc. System and method for automated workload characterization of an application server
US9069870B2 (en) 2006-07-12 2015-06-30 International Business Machines Corporation Client-side aggregation of context-sensitive request results where results for aggregation are asynchronously produced by multiple servers
US8131580B2 (en) * 2006-10-04 2012-03-06 Salesforce.Com, Inc. Method and system for load balancing a sales forecast system by selecting a synchronous or asynchronous process based on a type of an event affecting the sales forecast
US8965864B2 (en) * 2006-10-31 2015-02-24 Sap Se Method and system for efficient execution and rendering of client/server interactive applications
US7809988B1 (en) * 2006-12-29 2010-10-05 The Mathworks, Inc. Test environment having synchronous and asynchronous distributed testing
US20080168130A1 (en) 2007-01-09 2008-07-10 Wen-Tzer Thomas Chen Method and system for determining whether to send a synchronous or asynchronous resource request
JP5032219B2 (ja) * 2007-06-29 2012-09-26 株式会社東芝 演算方式を制御して情報を処理する装置、方法およびプログラム
US8032587B2 (en) 2007-08-28 2011-10-04 International Business Machines Corporation Method and apparatus for client-side aggregation of asynchronous fragmented requests
US8136122B2 (en) * 2007-08-30 2012-03-13 Software Ag Systems and/or methods for providing feature-rich proprietary and standards-based triggers via a trigger subsystem
US8185610B2 (en) 2007-12-04 2012-05-22 International Business Machines Corporation Method for client-side aggregation of asynchronous, context-sensitive request operations for java server pages (JSP)
US7499971B1 (en) * 2008-03-24 2009-03-03 International Business Machines Corporation Alternate java server page (JSP) processing for better response time
US8037122B2 (en) * 2008-09-19 2011-10-11 Oracle International Corporation Processing of service-oriented tasks within a grid computing environment
WO2010079535A1 (en) * 2009-01-09 2010-07-15 Hitachi, Ltd. Storage system having plural microprocessors, and processing allotment method for storage system having plural microprocessors

Also Published As

Publication number Publication date
JP2013521552A (ja) 2013-06-10
GB2486852B (en) 2013-10-09
GB201206116D0 (en) 2012-05-16
CN102782652A (zh) 2012-11-14
GB2486852A (en) 2012-06-27
CN102782652B (zh) 2015-05-06
DE112011100739T5 (de) 2013-06-27
DE112011100739T8 (de) 2013-08-29
US20110213829A1 (en) 2011-09-01
US8296411B2 (en) 2012-10-23
US20120304177A1 (en) 2012-11-29
US8943196B2 (en) 2015-01-27
WO2011107415A1 (en) 2011-09-09

Similar Documents

Publication Publication Date Title
JP5963682B2 (ja) 要求をディスパッチするための方法、システム、およびコンピュータ・プログラム
US20220046076A1 (en) Method And System For Real-Time Modeling Of Communication, Virtualization And Transaction Execution Related Topological Aspects Of Monitored Software Applications And Hardware Entities
Yadwadkar et al. Selecting the best vm across multiple public clouds: A data-driven performance modeling approach
Novaković et al. {DeepDive}: Transparently identifying and managing performance interference in virtualized environments
US9582303B2 (en) Extending placement constraints for virtual machine placement, load balancing migrations, and failover without coding
US9495186B1 (en) Automatic discovery of a javascript API
JP5911286B2 (ja) ハードウェア・アクセラレータに対する関数の実行時割り当ての装置、方法、およびプログラム
US9128792B2 (en) Systems and methods for installing, managing, and provisioning applications
US9253059B2 (en) Deploying an executable with historical performance data
US9098350B2 (en) Adaptive auto-pipelining for stream processing applications
WO2014179635A1 (en) Activity based sampling of diagnostics data
US11861394B2 (en) Automated semantic tagging
US20140196048A1 (en) Identifying and throttling tasks based on task interactivity
US9497095B2 (en) Dynamic control over tracing of messages received by a message broker
US10200252B1 (en) Systems and methods for integrated modeling of monitored virtual desktop infrastructure systems
EP2808792B1 (en) Method and system for using arbitrary computing devices for distributed data processing
US9329971B2 (en) Performance analysis system for analyzing inter-thread communications to enhance performance in multithreaded system
Michael et al. Cloudperf: A performance test framework for distributed and dynamic multi-tenant environments
US10558670B2 (en) Smart tuple condition-based operation performance
US20200327037A1 (en) Software application performance analyzer
US11294704B2 (en) Monitoring and reporting performance of online services using a monitoring service native to the online service
Chesani et al. Map reduce autoscaling over the cloud with process mining monitoring
Vögler et al. Non-intrusive monitoring of stream processing applications
Copil et al. Continuous elasticity: Design and operation of elastic systems
CN113132143A (zh) 服务调用追踪方法及相关产品

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131111

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150403

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20151201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160401

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20160411

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160628

R150 Certificate of patent or registration of utility model

Ref document number: 5963682

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees