JP4334232B2 - クライアント側の性能を測定するための方法、およびそのための命令を保持するコンピュータ読取可能な媒体、ならびにクライアント側の性能に応答する方法 - Google Patents

クライアント側の性能を測定するための方法、およびそのための命令を保持するコンピュータ読取可能な媒体、ならびにクライアント側の性能に応答する方法 Download PDF

Info

Publication number
JP4334232B2
JP4334232B2 JP2002584193A JP2002584193A JP4334232B2 JP 4334232 B2 JP4334232 B2 JP 4334232B2 JP 2002584193 A JP2002584193 A JP 2002584193A JP 2002584193 A JP2002584193 A JP 2002584193A JP 4334232 B2 JP4334232 B2 JP 4334232B2
Authority
JP
Japan
Prior art keywords
item
code
page
client
client process
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 - Lifetime
Application number
JP2002584193A
Other languages
English (en)
Other versions
JP2004537097A (ja
JP2004537097A5 (ja
Inventor
バイヤバント,スティーブン
ファローク,アーサラン
マーファティア,ジェイディープ
シュクラ,マヌ
Original Assignee
オラクル・インターナショナル・コーポレイション
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 オラクル・インターナショナル・コーポレイション filed Critical オラクル・インターナショナル・コーポレイション
Publication of JP2004537097A publication Critical patent/JP2004537097A/ja
Publication of JP2004537097A5 publication Critical patent/JP2004537097A5/ja
Application granted granted Critical
Publication of JP4334232B2 publication Critical patent/JP4334232B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0686Additional information in the notification, e.g. enhancement of specific meta-data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/091Measuring contribution of individual network components to actual service level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/02Capturing of monitoring data
    • H04L43/022Capturing of monitoring data by sampling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/16Threshold monitoring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/289Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Library & Information Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Description

発明の分野
この発明は、ウェブサーバからサービスを入手する際のウェブクライアントの性能を判定することに関し、特に、提供されるサービスに関するウェブクライアントの性能の測定およびそれに対する応答を制御するための技術に関する。
発明の背景
多くの企業は、インターネットを使用して遠くのエージェントおよび顧客に到達したいと考えている。インターネットは、各々が1つまたは複数のノードを備えたコンピュータネットワークの公共のネットワークである。インターネットはオープンな標準のプロトコルを使用してノードをアドレス指定し、1つのノードから別のノードへと情報を渡すユーザは、ネットワーク上のコンピュータにログオンすることによって、インターネットにアクセスする。ネットワーク上のコンピュータは。インターネットサービスプロバイダ(ISP)によって所有および運営されていることが多い。通常、ユーザはユーザ自身のコンピュータとISPのコンピュータとの間に切断可能なリンクを確立する。ユーザのコンピュータ(クライアント装置)で作動するクライアントアプリケーションプログラム(クライアントプロセス)は、インターネット上の異なるコンピュータ(サーバ装置)で作動するサーバアプリケーションプログラム(サーバプロセス)と対話する。クライアントプロセスは、アプリケーションプログラムからのサービスに対する要求をサーバ装置に送ることで通信を開始する。アプリケーションは、クライアントプロセスに何らかのコンテンツを送り返すことを含む、何らかのサービスを行なうことで応答する。
World Wide Web(Web)は、さまざまなサーバによって提供され、かつハイパーテキストトランスファープロトコル(HTTP)を使用してウェブブラウザと呼ばれるある特定のクライアントによってアクセス可能であるインターネット上で利用可能なサービスの集りである。ウェブブラウザを使用して、ユーザは、ユニバーサルリソースロケータ(URL)名によって識別されるウェブ上のサービスを選択し、サーバによって行なわれる動作の形でサービスをユーザに提供させ、コンテンツをクライアントに返させることができる。コンテンツは1つまたは複数のハイパーテキストマークアップ言語(HTML)ページを含む。返されたコンテンツは、大抵テキスト情報を含み、図形、映像および音声の要素を含むことも多い。返されたコンテンツの要素の一部は、リンクに関連付けられ、各リンクはウェブ上の別のリソースへのURLを含む。ブラウザのユーザがリンクに関連付けられる要素を選択すると、ブラウザは、含まれるURLにあるサービスの要求を送る。URLに関連付けられるネットワーク上の場所は、ウェブサイトと呼ばれる。
ウェブに基づくサービスを提供している当事者は、多く場合、ユーザのサービスの使用感に関心がある。ユーザのサービスの使用感ができる限り好ましいものであることがサービスプロバイダの最大の関心事である。一般に、サービスが正確、容易かつすばやく提供されたときには、ウェブに基づくサービスのユーザの使用感は好ましいものである。提供されるサービスおよび返されるコンテンツがユーザの期待したものである場合、サービスは正確に提供されている。ユーザがキーストロークなどの手動の操作をほとんど行なわず、かつほとんど考えずにサービスおよびコンテンツを入手できれば、サービスは容易に提供されている。ユーザがサービスを要求してから、サービスが行なわれたことを示すコンテンツが返されるまでの間に、頻繁または長い一時停止を感じることがなければ、リソースはすばやく提供されている。
ユーザの使用感の一部は、サーバアプリケーションプログラムおよびサーバ装置の性能に関連している。たとえば、要求がサーバで受取られて、サーバからコンテンツが送られるまでの間に費やされる時間は、ユーザによって遅延と知覚される。この部分の遅延は、サーバプロセスによって行なわれる処理およびサーバ装置の処理能力によって制御される。コンテンツが送られたとき(注文または払戻の確認がクライアントプロセスに送られたときなど)と、サービスが完全行なわれたとき(品物が出荷されたか、またはクレジットカードの口座に貸方または信用貸しが記録されたときなど)との間には、さまざまな遅延が生じ得る。サーバ側の性能は企業によって監視することができ、ユーザの好ましくない使用感に繋がると判断された場合には修正することができる。たとえば、大量の要求によって起こる知覚可能な遅延は、サーバ装置を追加するか、またはさもなくばウェブサイトに充てる施設を改良することによって、修正し、遅延を知覚できないほどに小さくすることができる。
ユーザの使用感の一部は、ネットワークおよびクライアントプロセスの性能に関連するが、ネットワークおよびクライアントプロセスは、サーバアプリケーションまたはサーバ装置によって容易に制御または監視することができない。要求および返されるコンテンツがネットワークを横断する際に遅延が生じる。クライアント装置がクライアント装置の表示装置にコンテンツをレンダリングするときにも遅延が生じる。他にも、サーバ側では明らかでない性能要因がある。たとえば、ユーザは、混乱しながら所望のリソースを見つけようとして、余分にキーを打ったりマウスを動かしたりすることがある。ユーザによるそのような余分な労力は、多くの場合、ウェブサイトの設計者には予測されていない。設計がそのような問題を予測できないのは、設計者がウェブサイトをテストする際、設計者はウェブサイトで何が利用可能であるかを既に知っているという事実によるところがある。
クライアント側で知覚される性能は、サーバ側では容易に監視できないため、ウェブサイトに責任を持つ当事者には容易に利用することができない。クライアント側で知覚される性能を知らないため、サービスプロバイダは、過剰な遅延および余分なキーストロークなどの知覚される性能に関する多くの問題に応答できない。
サービスプロバイダがクライアント側の性能の測定値を得るための1つの方法は、ネットワーク上の異なる場所に分散された演算装置でエージェントプログラム(エージェント)のセットを作動させることに基づいてクライアント側の性能を推測することである。ブラウザのユーザをシミュレートするために、各エージェントは定期的に1つまたは複数のサービスをウェブサイトから要求し、1つまたは複数のHTMLページを受取る(ダウンロードする)。要求を送ってから、エージェントを作動させる装置で返されるコンテンツを受取るかまたはレンダリングするまでにかかる時間が、知覚されるクライアント応答時間の推定値として使用される。エージェントのセット上で推定されたクライアント応答時間の分布は、本物のユーザが感じる実際のクライアント応答時間の分布を表わすものと考えられる。
多くの用途に好適であるものの、「シミュレーション−エージェント」方法にはいくつか欠点がある。たとえば、シミュレーション−エージェント方法は、通常、ウェブサイトのサービスのいくつかのみの応答時間を測定するにすぎず、サービスの中には全くテストされないものもある。シミュレーション−エージェント方法は、本物のユーザがウェブサイトの性能を知覚する実際の場所からの応答時間を測定しない。シミュレーション−エージェント方法は、ユーザの混乱および余分なカーソルの動き、または余分なキーストロークをシミュレートしない。シミュレーション−エージェント方法は、本物のユーザと競合するエージェントによって、ウェブサイトに擬似的な負荷を与える。したがって、エージェント自身が、知覚される性能の低下の一因となる。さらに、シミュレーション−エージェント方法は、推定されるクライアント応答時間をサービスプロバイダに報告するため、
ネットワークのトラフィックを増やす。
第2の方法は、クライアント装置にエージェントをインストールするものである。クライアント側エージェントは、本物のユーザのクライアントプロセスによってダウンロードされるページのクライアント応答時間を測定する。多くの用途に好適であるものの、クライアント側エージェント方法にも、いくつかの欠点がある。クライアント側エージェント方法には、エージェントソフトウェアをクライアント装置にインストールし、かつ維持するための面倒なステップが伴う。たとえば、エージェントの中には、他の装置ドライバのメモリにマップし、それらの装置ドライバの活動を記録する特別な装置ドライバの形を取るものがある。この例では、それらの他の装置ドライバがアップグレードされるかまたは交換されるのに伴い、互換性を保つようにエージェントを維持しなければならない。クライアント側エージェント方法には、測定された応答時間を保存し、探し、スケジュールし、かつネットワーク上でサービスプロバイダに送るための、クライアント装置での面倒なステップも伴う。
上述のことに基づき、ウェブサイトを提供するサービスプロバイダが、ウェブサイトで提供されるサービスに関連するクライアント側の性能を測定し、かつクライアント側の性能の問題に応答することを可能にする技術が必要とされているのは明らかである。
発明の概要
クライアント側の性能を測定するための技術は、クライアントプロセスに送られるべき項目を、クライアントプロセスに到達する前に途中で捉えるステップを含む。項目は変更されて、コードを含む変更された項目が作成される。このコードは、項目に関連付けられたサービスに関連する性能をクライアント装置のプロセッサに測定させる。また、このコードは、性能測定の結果の測定値に基づいて1つまたは複数の動作をプロセッサに行なわせる。変更された項目はクライアントプロセスに送られる。
この発明の別の局面によると、クライアント側の性能に応答するための技術は、アプリケーションによって作成された項目を途中で捉えるステップを含む。ネットワークは、クライアントプロセスを実行するクライアント装置を、アプリケーションを実行してサービスを提供するように構成されるサーバ装置に接続する。項目は、アプリケーションに対して透過的に変更され、コードを含む変更された項目が作成される。このコードは、アプリケーションによって提供されるサービスに関連する性能をクライアント装置のプロセッサに測定させる。性能の測定の結果の測定値に基づき、コードは、プロセッサに、測定値を示すデータをサーバ装置へと送らせる。変更された項目はクライアントプロセスに送られ、測定値を示すデータは受取られ、データベースに記憶される。このデータに基づき、性能がしきい値を下回ったかが判定される。性能がしきい値を下回った場合、通知メッセージが送られる。
この発明の別の局面によると、コンピュータ読取可能な媒体は、プロセッサ上で実行しているクライアントプロセスによってプロセッサを有する装置の表示装置上で呈示するための要素を示すデータを保持する。コンピュータ読取可能な媒体は、装置での受取り時に実行される命令の第1のシーケンスも保持する。コンピュータ読取可能な媒体は、命令の第1のシーケンスの到着後に、クライアントプロセスによって呼出される命令の第2シーケンスも保持する。命令の第2のシーケンスは、要素を表示装置に呈示することに関連する性能をプロセッサに測定させる。命令の第2のシーケンスは、性能測定の結果の測定値に基づいてある動作をプロセッサに行なわせる。命令の第1のシーケンスは、クライアン
トプロセスに、命令の第2のシーケンスをデータによって示される要素に関連付けさせる。
これらの技術によって、サービスプロバイダは、ウェブに基づくサービスから項目がクライアントプロセスへと送られるたびに、自動的に項目を変更することができ、クライアント装置に性能を監視するエージェントをインストールし、かつ維持する面倒なステップをなくすことができる。これら技術のさまざまな実施例では、変更はサーバアプリケーションの設計者に対して透過的に行なうことができるため、新しいサーバアプリケーションにも既存のサーバアプリケーションにも容易に適用することができる。またこれらの技術によって、サービスプロバイダは、ウェブサイトに擬似的な負荷をかけることなく、本物のユーザが感じる実際の性能の測定値を得ることができる。変更されたコンテンツ内のコードは、サービスプロバイダによる分析のためにこれらの測定値をサービスプロバイダに報告することから、クライアントプロセスのユーザに自動的に通知すること、さらに、性能の問題をクライアントプロセスまたはクライアント装置の特定の構成要素に相互に関連付けることなどによって、好ましくない性能の原因を診断することなど、所望の応答をするように適応させることができる。
添付の図面の中で、限定ではなく例によってこの発明を説明する。図面中の同様の参照番号は同様の要素を示す。
好ましい実施例の詳細な説明
クライアント側の性能をサーバ制御で測定するための技術を説明する。以下の説明では、説明のため、多数の具体的な詳細を示して、この発明を完全に理解できるようにしている。しかしながら、これらの具体的な詳細なしにこの発明を実行できることは、当業者にとって明らかであろう。場合によって、周知の構造および装置をブロック図の形で示して、不必要にこの発明をわかりにくくするのを避けている。
構造要素の概要
この発明の一実施例による構造要素およびそれらの上で動作するプロセスを図1に示す。図1は、一実施例によるサービスプロバイダのサーバ装置102およびネットワーク120に接続されるクライアント装置110を示すブロック図である。クライアント装置110は、クライアントプロセス114を実行し、これがネットワークに接続されるサーバ装置で実行するアプリケーションからのサービスを要求する。サーバ装置102はアプリケーション104を含み、これはクライアントプロセスからの要求に応答して、ネットワーク上でサービスを提供するプロセスである。たとえば、サーバ装置102上のウェブサーバプロセスは、クライアントプロセス114からの要求をアプリケーション104へとルーティングし、応答をネットワークへとルーティングする。実施例によっては、ウェブサーバプロセスは、特定の機能をウェブサーバに付加するためのサーブレット103を含む。
クライアント装置は、いくつかのクライアント装置にセキュリティなどの1つまたは複数の共通のサービスを提供するプロキシサーバ124を通じてネットワークに接続される。他の実施例では、クライアント装置は、プロキシサーバ124なしにネットワーク120に直接接続される。図1に示されるように、サーバ装置102は、後述するように、いくつかのサーバにセキュリティなどの1つまたは複数の共通のサービスを提供する特別なプロキシサーバ122を通じてネットワーク120に接続される。実施例によっては、サーバ装置102は、特別なプロキシサーバ122なしにネットワークに直接接続される。
図1によると、ネットワーク120上でクライアントプロセス114から受取られた要求に応答して、アプリケーション104は項目105を生成し、ネットワーク上でクライアントプロセス114に送る。項目105は、一般に、ネットワーク上で提供され得るあらゆる形のコンテンツを表わす。項目105は、クライアントの要求を受取る前に生成され、記憶された静的なウェブページを検索することによってか、または要求および要求時のシステムの状態に基づいて動的にウェブページを生成することによってなど、当該技術分野で公知の態様で、アプリケーション104によって生成することができる。システムの状態は、データベースの現在の項目、ハードウェアの現在の構成、現在の時間等を含む。
項目105が作成されると、インスツルメント挿入プロセス106が、クライアントに到着する前に項目105を途中で捉え、項目105を変更し、元々の項目105に基づいて変更された項目107を生成する。インスツルメント挿入プロセス106がこのように名付けられているのは、変更が、クライアント側の性能を測定するように項目に本質的にインスツルメントを取り付ける(instrument)ためである。
一実施例によると、変更された項目107は、コードを含み、これは、クライアントプロセス114に受取られると、クライアント装置110の1つまたは複数のプロセッサに、アプリケーション104によって提供されるサービスに関連する性能を測定させ、少なくとも1つの結果の測定値に基づいて1つまたは複数の動作を行なって測定された性能に応答させる。これについては後述する。
一実施例によると、何らかのコード108が予め規定され、サーバ装置102に記憶される。インスツルメント挿入プロセス106は、変更された項目107が予め規定されたコード108を含むように、予め規定されたコード108を挿入して元々の項目を変更する。実施例によっては、変更された項目107に挿入されるコードは、すべて予め規定される。また実施例によっては、コードの一部が予め規定されるか、または全くされない場合もある。World Wide Webに関わる実施例では、サーバ装置102で作動するウェブサーバプロセスがインスツルメント挿入プロセス106を実行する。別の実施例では、ウェブサーバのサーブレット103がインスツルメント挿入プロセス106を実行する。実施例によっては、項目105、予め規定されたコード108、インスツルメント挿入プロセス106および変更された項目107は、後述するように特別なプロキシサーバ122にある。
図1に示すように、クライアントプロセス114は、変更された項目内のコードの結果として、性能測定インスツルメント116を含む。性能測定インスツルメント116は、クライアントの性能の何らかの局面を測定し、測定値に基づいて動作するプロセスである。
一実施例によると、結果としての1つまたは複数の測定値は、クライアント装置110のメモリまたは記憶装置の測定値データ構造118に記憶される。別の実施例では、性能測定インスツルメント116は、クライアントプロセス114外で、別のプロセスとしてクライアント装置110で実行する。これら別の実施例の一部では、測定値データ構造118は、プロキシサーバ124のメモリまたは記憶装置に記憶される。
図1に示すように、クライアント側の性能の測定値はサーバ装置102に返され、記録された測定値のログ193に記憶される。測定値をサーバで記録するためのいくつかの方法を以下に述べる。測定された性能を分析し、それに対応するための1つまたは複数のプロセス194がサーバ装置102上で実行しているのが示される。プロセス194によって行なわれる分析は、1つまたは複数のクライアント装置の傾向を判定するステップを含
んでもよい。応答は、アプリケーション管理者に、性能が何らの予め確立された性能のしきい値レベルを下回っていることを通知するステップを含んでもよい。図1に示すように、記録された測定値に基づく情報がリレーショナルデータベースなどの測定値データベース196に記憶され、分析および応答プロセス194を支援する。別の実施例では、ログ193に記録された測定値、または分析および応答プロセス194、もしくはデータベース196、または何らかの組合せが、特別なプロキシサーバ122などのネットワークに接続された1つまたは複数の装置にあり、アプリケーション104を提供するサービスプロバイダの利益となるように制御される。
機能の概要
図2は、一実施例によるクライアント側の性能に対する応答を制御するための方法200を示すフローチャートである。一実施例によると、図1のインスツルメント挿入プロセス106は、図2に説明されるステップを行なう。たとえば、インスツルメント挿入プロセス106を実行するウェブサーバまたはサーブレットは、図2のステップを行なう。
ステップ202では、アプリケーションによって作成された項目が途中で捉えられる。実施例によっては、ウェブサーバは、アプリケーションによって作成された項目を途中で捉えるようにプログラムされる。また実施例によっては、ウェブサーバに付加されるサーブレットが項目を途中で捉える。ウェブ項目が特別なプロキシサーバ122にキャッシュされてからネットワーク上で伝送される実施例では、キャッシュするプロセスが項目の変更を行なうように変更される。
キャッシュに基づく実施例では、元々の項目は、元々の出所からキャッシュに向かい、次に、キャッシュから1つまたは複数の目的地に向かう。項目の変更は、項目がキャッシュに記憶される前、項目がキャッシュに記憶されている間、または項目がキャッシュから目的地に送られるたびに行なうことができる。一実施例では、元々の出所から送信された後であって、かつクライアント装置110に送信される前に、項目はプロキシサーバ124にキャッシュされる。
途中で捉えた項目を変更するべきかの判定
実施例によっては、途中で捉えられた項目はすべて変更され、ステップ204は行なわれない。しかしながら、一般に、途中で捉えられた項目のいくつかにのみ変更を行なうことが有利である。
ステップ204では、項目を変更する条件が満たされているかが判定される。たとえば、ウェブサイトが、画像、映像ストリームおよび音声ストリームのデータに関してHTMLページを作成すると仮定する。画像、映像ストリームおよび音声ストリームはウェブページ自身から別々に送られる。対象の性能がページを完全にロードするための時間である場合、コードをページに添付すればよく、別々に送信されるページの各要素に添付する必要はない。
別の例では、サービスプロバイダは、アプリケーションでのエラーの発生時に送られるページをロードするのにかかる時間には関心がないことがあり得るため、プロセス106は途中で捉えられた各項目がエラーのページであるかを判定し、エラーのページにはインスツルメントを取り付けない。
別の例では、アプリケーションによって生成される項目のうちのある割合にのみインスツルメントを取り付けることで、性能の統計的な測定を実現することができる。この場合、アプリケーションによって生成されたいくつかの項目のうちの1つにのみインスツルメントが取り付けられる。たとえば、プロセス106は、途中で捉えた項目の1パーセント
のみを変更するように構成することができる。そのような統計的なサンプリングでは、途中で捉えた項目を変更すべきかの判定に使用される1つの要因は、統計的なサンプリングスケジュールである。たとえば、生成され、1つまたは複数のクライアントに送られる項目の数が計数される。計数は、途中で捉えられた項目のサンプルの1%の100番目ごとの計数などのサンプリングスケジュールと比較される。またはこれに代えて、プロセス106は、項目を選択して、ある率で変更する(たとえば、1分につき1つの項目を変更する)ように構成してもよい。
一実施例では、途中で捉えた項目を変更すべきかの判定に使用される1つの要因は項目の種類であり、これは、項目に関連付けられる汎用インターネットメール拡張(Multipurpose Internet Mail Extension;MIME)によって示される。MIMEの種類は、項目の残りのデータの前に来るヘッダフィールドで識別される。たとえば、グラフィックインターチェンジフォーマット(Graphic Interchange Format;GIF)画像は、MIMEの種類が「image/gif」であり、プレーンテキストは、MIMEの種類が「text」である。一実施例では、特定のMIMEの種類の項目のみが変更される。
別の実施例では、特定の項目を変更すべきかの判定に使用される要因は項目の名前を含む。たとえば、ウェブページは、ウェブ上のページを探すために参照として使用されるユニバーサルリソースロケータ(Universal Resource Locator;URL)名を有する。一実施例では、ある特定の文字列と合致するページ名を有する項目のみが変更される。定型の文字列操作表現を使用して所望の合致を特定してもよい。たとえば、「catalog」という言葉を含むURLは、すべて「*catalog*」という表現で特定される。
ステップ206では、項目を変更する条件が満たされるかが判定される。たとえば、MIMEの種類が「text」であるかが判定される。別の例では、URLが表現「*catalog*」に整合するかが判定される。また別の例では、カウンタが余りなしに100で割切れるかが判定される。そうである場合、制御はステップ208に移り、項目を変更する。そうでない場合、制御はステップ220に移り、変更されない項目がクライアントプロセスに送られる。
ステップ208では、項目は変更され、クライアント装置に性能を測定させ、結果としての測定値に基づいて動作させるコードが挿入される。ステップ208は後のセクションで詳細に述べる。
ステップ210では、変更された項目がクライアントプロセスに送られる。
ステップ220では、変更されない項目がクライアントプロセスに送られる。
例示的な項目
図3に示される例示的な項目を使用し、例によって、この発明の実施例を以下に説明する。図3は、サーバ装置で作動する仮定のアプリケーションによって作成される例示的な項目がクライアント装置に現われるのを示すブロック図である。この例では、項目は、ウェブブラウザによってクライアント装置の表示装置のブラウザウインドウ360に呈示される4つのフレーム362a、362b、362c、362dのフレームセットである。ウェブブラウザはクライアントプロセスである。各フレームは1つのHTMLページを保持する。ウェブブラウザはカーソル361も表示し、これはクライアント装置のキーまたは位置指示装置、もしくはその両方を用いることでウェブブラウザのユーザが操作した結果の表示装置上での位置を示す。
第1のフレーム362a内のHTMLページは、テキスト領域364およびユーザがデ
ータを入力できるフォーム370などのいくつかのウェブページ要素を含む。第1のフレームは、リンク366と呼ばれるいくつかのウェブページ要素も含む。ユーザがリンク上にカーソル361を位置付けてクリックする(たとえば、クライアント装置上のキーを押す)ことでリンクを選択すると、ウェブブラウザに配信された項目のリンクに関連付けられるURLアドレスにあるネットワーク上の別のウェブページに対する要求が生成される。リンクは強調された記述テキストまたはボタンとして表示される事が多く、項目内の関連付けられるURLアドレスは、表示装置に示されないことが多い。たとえば、リンク366aは、テキスト領域364の強調されたテキストであり、リンク366b、366c、366dは、分離され、強調される文字列として呈示され、リンク366eは、「次へ(NEXT)」と表示されたボタンとして呈示される。関連付けられるURLにある別のウェブページは、既に表示されているHTMLページを生成した同じアプリケーションによって生成される別のHTMLページであることが非常に多い。
第1のフレーム362a内のフォーム370は、3つのウェブページ要素、つまり、2つの入力フィールド372a、372bおよび「サブミット(SUBMIT)」と表示されたボタンを含む。ユーザは、1つの入力フィールド上にカーソルを動かしてクリックすることで、入力フィールド372a、372bのうちの1つを選択する。次に、ユーザは、クライアント装置のキーを押すことで選択したフィールドにデータを入力する。ユーザは、入力されたデータに満足するまで、繰返し選択し、フィールドにデータを入力することができる。満足すると、ユーザはカーソルをサブミットボタン上に動かし、クリックする。サブミットボタンのクリックに応答して、ブラウザは入力フィールド372a、372bのデータをネットワーク上でアプリケーションに送る。データを受取ったことに応答して、アプリケーションは、入力に基づいてサービスを進行させ、付加的なHTMLページおよびフレームセットを生成することが多い。
例示的な性能
図3に示される例示的な項目を提供するサービスプロバイダは、ウェブブラウザのユーザが示されるフレームセットと対話する際によい性能を得られることを望んでいる。この例では、サービスプロバイダは性能の2つの基準に関心がある。第1の基準は、リンクまたはサブミットボタンをクリックしてから、ウェブブラウザがブラウザのウインドウに次のフレームセットを完全にレンダリングするまでの間に、ユーザによって知覚される応答時間である。第1の基準は、ユーザによって知覚されるウェブサイトの速さを示す。この応答時間が知覚不能かまたは数秒未満である場合、この基準による性能は優れている。
第2の基準は、ブラウザによってフレームセットがレンダリングされてから次のリンクまたはサブミットボタンがクリックされるまでのカーソルの動きの数である。この基準は、ユーザが項目とやり取りするのに費やした労力をある程度示す。一般に、カーソルの動きが多いほど、ユーザによって費やされる労力は大きい。カーソルの動きが少なければ、この基準による性能は優れている。
従来のシステムでは、ユーザによって知覚される応答時間もカーソルの動きの数も容易にサーバに報告されないため、どちらもサービスプロバイダは容易に利用することはできない。
例示的な性能情報は、サービスプロバイダにとってさまざまな面で価値がある。たとえば、サービスプロバイダがネットワークまたは仮想専用線(VPN)でアプリケーションをホストしている場合、最低限度の許容性能を示したサービスレベル合意がある場合が多い。ユーザの知覚する反応時間の基準が利用できれば、サービスプロバイダは、ある所与の数のユーザの応答時間に関してサービスレベル合意を表現し、合意に準拠しているかを監視するためにサービスレベルの報告を行なうことができる。
応答時間の測定値によって、サービスプロバイダは、性能が許容不可能なレベルまたは準拠しないレベルに低下する前に、たとえば、同じ項目およびクライアント装置の応答時間の増加などの、徐々に性能が低下する傾向を検出することができる。
さらに、クライアント装置に相互に関連する応答時間についての情報によって、サービスプロバイダは、どのクライアント装置に異常な応答時間の問題があるかをユーザ組織に報告することができる。たとえば、同時に作動している装置の大半が7秒で受取り、レンダリングをしているある特定のフレームセットの受取りおよびレンダリングに、ある特定のクライアント装置、装置Xが、繰り返し42秒の応答時間を示す場合、装置Xにはおそらく問題がある。そのような報告によって、ユーザ組織は、装置Xまたはそのネットワーク接続、もしくはその両者に的を絞って調査を行なうことができ、修正動作を行なうこともあり得る。
応答時間は、病的なレンダリングの問題がある項目を特定するために使用することもできる。サービスプロバイダは、その項目に的を絞って再設計することができる。同様に、カーソルの動きの数を使用して、ユーザが過度にカーソルをあちこちに動かすことに繋がる混乱を招く配置のある項目を特定することができる。サービスプロバイダは、その項目に的を絞って再設計することができる。
応答時間に関連付けられるブラウザの種類およびバージョンについての補助的なデータとともに、サービスプロバイダは、ブラウザおよびバージョンのある特定のセットに限られたレンダリングの問題を特定することができる。次に、サービスプロバイダは、ユーザ組織の活動に好適なブラウザのアップグレードをユーザ組織に知らせることができる。また、サービスプロバイダは、特定のセットに属するブラウザのバージョンに対して、短い応答時間で送信およびレンダリングされるより単純な項目である第2のバージョンの項目を開発することもできる。項目に2つのバージョンがあれば、サービスプロバイダは、ユーザ装置で検出されたブラウザのバージョンがある特定のセットの一員である場合、第2のバージョンの項目を生成して項目を動的に適合させることができる。
応答時間の測定値によって、サービスプロバイダは、性能が突然低下した場合の手順を確立することもできる。たとえば、応答時間の急激な増加に応答して、サービスプロバイダは、サーバまたはクライアントに、ネットワークのトラフィックを減らすかまたは転送する手順、もしくはシステム管理者に通知する手順を起動させることができ、または、サーバに容易に送信またはレンダリングすることのできる単純なバージョンの項目を生成させることができる。
応答時間の測定値によって、サービスプロバイダはサーバ側の性能の計量値を診断し、これにフィルタをかけることができる。サービスプロバイダは、通常、ウェブサイトを支援するサーバのシステムの演算リソースの使用および性能を定量化する大量の計量値を集める。そのような計量値は数百にも上ることがあり、たとえば、いくつかの構成要素の各々についての中央処理ユニットの使用、メモリの使用、ディスクの使用、データベース−バッファ−キャッシュの使用等を含む。さまざまなときに、これらの計量値のいくつかが、心地よい動作のしきい値を上回る急激なピークを形成するなど、スパイクを形成する。すべてのスパイクがユーザによって知覚される応答時間に影響するわけではない。応答時間の測定値を使用して、サーバ側の性能のスパイクと知覚可能な応答時間の影響との間の相互的な関係を検出することができる。次に、サービスプロバイダは、スパイクがクライアントプロセスのユーザに最も重大な影響を与えている構成要素およびリソースの容量を増加させるか、またはその使用を低減することに注意および労力を集中することができる。
例示的な性能インスツルメンテーション
この発明の一実施例によると、クライアント側の性能を測定し、結果的な測定値に応答するため、アプリケーションによって作成された項目にコードが挿入される。一実施例によると、ユーザがページを選択してから、そのページが完全にレンダリングされるまでの遅延(「クリックしてから表示されるまでの時間(click to eyeball time)」)は以下の2つのステップのプロセスを使用して測定される。
(1) 第1のコードのセットが第1のウェブページに挿入される。第1のコードのセットは、第1のウェブページ上で制御に関連付けられ、第2のウェブページを要求する。コードの第1のセットは、制御が選択されたときに実行される。第1のコードのセットは制御が選択された時間を記録する。
(2) 第2のコードのセットが第2のウェブページに挿入される。第2のコードのセットは、第2のウェブページが完全にレンダリングされたときに実行される。コードの第2のセットは、第2のウェブページが完全にレンダリングされた時間を記録する。
コードの第1のセットによって記録された時間と、コードの第2のセットによって記録された時間との差が、第2のウェブページのクリックしてから表示されるまでの時間である。
多くの実施例では、第1のコードのセットおよび第2のコードのセットの両方がアプリケーションによって生成された各ウェブページに挿入される。
クリックしてから表示されるまでの時間およびイベント計数の測定
一実施例では、性能測定インスツルメントが、ユーザがリンク(サブミットボタン)をクリックしたときのサブミット時間と、次のフレームセットがウェブブラウザにレンダリングされたロード時間との差として、ウェブページのクリックしてから表示されるまでの時間を判定する。サブミット時間は、図4を参照にして後述するように、ユーザがリンクまたはサブミットボタンをクリックしたときにウェブブラウザによって呼出される第1のインスツルメントイベントハンドリングルーチンで判定される。ロード時間は、図4Bを参照してさらに詳細に説明されるように、フレームセットがレンダリングされたときにウェブブラウザによって呼出される別のインスツルメントイベントハンドリングルーチンで判定される。
上述のクリックしてから表示されるまでの時間の測定に加え、ウェブページがロードされてから次のウェブページが要求されるまでに、ウェブページ上の項目を活性化することおよびウェブページ上の項目を変更することに関連付けられるイベントを計数することで、性能測定インスツルメントがカーソルの動きの数を判定する例を説明する。カウンタは、図4Bに関してさらに詳細に説明するように、各フレームセットがレンダリングされたときにウェブブラウザによって呼出される第2のインスツルメントイベントハンドリングルーチンで無効な値にリセットされる。カウンタの値は、図4Dを参照してさらに詳しく説明するように、ユーザがウェブの要素を変更またはウェブの要素に焦点を当てたときにウェブページによって呼出される第3のインスツルメントイベントハンドリングルーチンに記憶される。
一実施例によると、サブミット時間、ロード時間およびカウンタの値の測定値は、クッキーとも呼ばれる初期設定ファイルに記憶される。クッキーは、HTMLページ内のスクリプトに応答してクライアント装置のウェブブラウザによって作成されるデータ構造である。ウェブブラウザは、次の要求とともに、HTMLページを提供したのと同じサーバに
クッキーを自動的に送る。
インスツルメントイベントハンドラ
一実施例によると、性能測定インスツルメントの第1の部分は、インスツルメントを含むウェブページをブラウザが受取るとすぐにブラウザによって実行される。実行されると、図5Aを参照してさらに詳しく後述するように、「到着時実行」コードが各ページを記述するHTMLステートメントを変更して、フレームセット、ウェブページおよびウェブページの要素を記述するHTMLステートメントのうちの少なくとも一部に「インスツルメントイベントハンドラ」を関連付ける。
ウェブブラウザは、ウェブページ要素を備えた1つまたは複数のウェブページのフレームセットをクライアント装置の表示装置にレンダリングし、ウェブページまたはウェブページ要素に関連付けられる、ユーザまたはクライアント装置のオペレーティングシステムによる動作に応答する。ウェブページおよびウェブページの要素は、HTMLのステートメントで記述される。ウェブブラウザの応答は、標準の挙動を提供する組込みのルーチンによって提供される。たとえば、ウェブブラウザは、カーソルの付近のウェブページ要素を強調することでユーザのカーソルの動きに応答し、リンクに関連付けられるURLにHTMLのステートメントで要求を送ることでユーザのリンクのクリックに応答する。
ウェブブラウザによって、ウェブページのプロバイダは、ウェブページおよびウェブページ要素に関連付けられる動作に対して付加的な挙動を提供することができる。ブラウザはイベントと呼ばれるデータ構造を生成し、これはウェブページまたはウェブページ要素に関連付けられる動作を記述する。ウェブブラウザは、イベントハンドラと呼ばれるプロセスにパラメータとしてイベントを渡し、これらイベントハンドラはウェブページまたはウェブページ要素を規定するHTMLステートメント内に記載される。イベントハンドラを記述するコードも、ウェブページによって直接提供されるか、またはコードを含むファイルへの参照で提供される。あるウェブページまたはウェブページの要素に対して付加的な挙動が所望でない場合、そのページまたは要素に対するHTMLステートメント内にはイベントハンドラは記載されない。
ある実施例によると、インスツルメントは、1つまたは複数のウェブページまたはウェブページ要素とともに記載された1つまたは複数のインスツルメントイベントハンドラを含み、クライアント側の性能の測定に繋がる挙動を提供する。
次に、変更された項目のコードに含まれるインスツルメンテーションイベントハンドラを図4A、4B、4Cおよび4Dに関して説明する。インスツルメンテーションイベントハンドラの説明に続いて、図5Aおよび5Bを参照してインスツルメンテーションイベントハンドラをウェブページの要素に関連付けるプロセスを説明する。
リンクをクリックするか、またはフォームのサブミットボタンをクリックすることで、ユーザはサービスの要求を開始する。これ以降、サブミットイベントは、リンクのクリック、およびフォームのサブミットボタンのクリックの両方を指すのに使用される。ネットワーク上のアプリケーションの応答時間のユーザによる知覚は、ユーザがサービスの要求を開始したときに始まる。図4Aは、一実施例による、クライアントに送られる変更された項目に含まれるサブミットイベントハンドラ400を示すフローチャートである。イベントハンドラ400は、サブミットイベントに関連付けられる。ウェブページ要素をこのイベントハンドラに関連付けるプロセスは、図5Bに関して後述する。ウェブブラウザのユーザがダウンロードしたページの閲覧中にカーソルをリンクに動かしクリックするか、またはフォームのサブミットボタンをクリックすると、ルーチンが呼出され、これが図4Aのステップを行なう。このイベントハンドラの1つの目的は、ユーザがサービスの要求
が行なわれたと知覚したときの時間を記録することである。
ステップ402では、インスツルメントイベントハンドラを実行するウェブブラウザの種類およびバージョンが判定される。ウェブブラウザの種類を判定するのは、クライアント装置の1つまたは複数のプロセッサに上述のステップを行なわせるステートメントは、ステートメントを実行するウェブブラウザにある程度依存するためである。たとえば、ユーザがカーソルおよび装置キーを操作したときにブラウザによって生成されるイベント名は、ブラウザによってさまざまであり得る。また、ブラウザが新しければ、インスツルメンテーションを実現するコードはそのウェブブラウザでテストされていないことがあり得る。そのような状況では、コードが実行されない方がウェブブラウザのユーザにとって安全である。
ステップ403では、コードがテストされたブラウザであるかを判定する。テストされていなければ、制御はステップ410に移り、クリックイベントを取扱うための元々の方法が呼出される。ステップ402および403は、図5Aに関して後述されるように、到着時実行コードがクライアント装置のプロセッサに類似のチェックを行なわせる場合には行なわれない。
ステップ404では、現在の時間が判定される。現在の時間は、応答時間の測定の一環として、サービスの要求が開始された時間を規定するために使用される。
ステップ406では、サブミットイベントに関連する性能の測定値がメモリのデータ構造または永続的記憶装置に記憶される。たとえば、現在の時間は、サブミット時間としてクッキーに記憶される。
ステップ408では、補助的なデータがデータ構造に記憶される。補助的なデータは、性能の問題を診断し、そのような問題の解決策を設計するために後続の分析で使用される。たとえば、ブラウザの種類およびバージョンは補助的なデータとして記憶される。上述のように、応答時間に関連付けられるブラウザの種類およびバージョンについての補助的なデータとともに、サービスプロバイダはブラウザおよびバージョンの特定のセットに限定される項目のレンダリングの問題を識別することができる。別の例では、クライアント装置のプロセッサおよびクロック速度が補助的なデータとして記憶される。
ステップ410では、サブミットイベントに対する元々のイベントハンドラがあれば呼出される。ブラウザは、リンクに関連付けられるイベントハンドラを実行する前でなく、ユーザがリンクをクリックしたときに自動的に新しいページを要求する。同様に、ブラウザは、サブミットボタンに関連付けられるいずれかのイベントハンドラを実行する前でなく、サブミットボタンがクリックされたときに自動的にフォームからデータを送る。そのようなサブミットイベントハンドラは、サブミットイベントが発生したときに行なう付加的な機能を提供する。サブミットイベントハンドラ400は、アプリケーションによって作成された元々の項目のリンクまたはサブミットボタンに元々関連付けられるいずれかのサブミットハンドラを置換える。したがって、ステップ410では、リンクまたはサブミットボタンに関連付けられるサブミットイベントに対してアプリケーションによって提供された特別の機能が、元々のイベントハンドラを呼出すことで復元される。アプリケーションがリンクまたはサブミットボタンに対してサブミットイベントハンドラを含まない場合、ステップ410は行なわれない。ウェブブラウザは、リンクに関連付けられる新しいページを自動的に要求するか、またはフォームから自動的にデータを送るなどの組込みのステップを行なう。
ネットワーク上のアプリケーションの応答時間のユーザによる知覚は、新しいフレーム
セットなどの新しい項目が完全にロードされたときに終わる。図4Bは、一実施例による、クライアントに送られる変更された項目に含まれるロードイベントハンドラ420を示すフローチャートである。イベントハンドラ420は、ブラウザウインドウロードイベントとも呼ばれるフレームセットロードイベントに関連付けられる。このハンドラへのウインドウレベルロードイベントの関連付けは、図5Aに関して後述する。ウインドウロードイベントを使用しない実施例では、図5Bに関して後述するように、ページロードイベントが用いられる。したがって、ブラウザウインドウが完全にダウンロードされ、クライアント装置の表示装置にレンダリングされると、ルーチンが呼出され、これが図4Bのステップを行なう。このイベントハンドラの1つの目的は、ユーザが、新しい項目がクライアント装置の表示装置にレンダリングされたと知覚した時間、つまり、応答時間の測定が完了した時間を記録することである。実施例によっては、このイベントハンドラの別の目的は、何らかの態様で満足のいかない応答時間に応答することである。
ステップ422および423は、図4Aのステップ402および403に対応する。ステップ422および423は、コードを実行しているブラウザがそのコードでテストされていない場合に、インスツルメンテーションイベントハンドラの他のステップを行なうのを省く。ステップ422および423は、図5Aに関して後述するように、到着時実行コードが類似のチェックを示す実施例では省略される。
ステップ424では、フレームセット内のすべてのページがロードされたかが判定される。実施例によっては、ステップ420は、ページがロードされるたびにウェブブラウザによって行なわれる。図3に示されるように、項目の中にはウェブブラウザにいくつかのページをフレームセットの各フレーム内に1つずつ同時に呈示させるものがある。ユーザによる応答時間の知覚は、フレームセットのすべてのフレームにページをロードすることに基づく。ステップ424は、ロードされたばかりのページがフレームセット内の最後のページであるかを確認する。たとえば、ステップ424では、前にロードされたページの数に現在ロードされるページを足したものが、フレームセット内のフレーム数と等しいかが判定される。フレームセット内のフレーム数は、アプリケーションから送られる項目に含まれ、図5Aに関して後述するように、到着時実行コードに基づいてクライアント装置のプロセッサによって捕捉される。以前にロードされたページ数はページカウンタに維持される。図4Cに示されるように、ページカウンタは、入力バッファからページがアンロードされて次のページのために道が空けられ、かつブラウザがアンロードイベントを発行するたびに増分される。
ステップ424で、ロードされたばかりのページがフレームセット内の最後のページでないと判定された場合、制御はステップ436に移り、ロードイベントに対する元々の方法ハンドラがあり、かつまだ呼出されていない場合、これが呼出される。ウインドウロードイベントを使用しない別の実施例では、図5Bに示すように、ステップ420を行なう前に元々のページロードイベントハンドラが呼出される場合、ステップ436は省略できる。ステップ436が省略される場合、またはステップ436が完了した後、制御はウェブブラウザの組込みの方法に移り、ユーザのカーソルおよびキーの操作の監視が進められる。
ステップ424で、ロードされたばかりのページがフレームセット内の最後のページであると判定されると、制御はステップ426に移り、現在の時間が判定される。現在の時間は、応答時間の測定の一環として、新しいフレームセットがレンダリングされ、ユーザに見られた時間を規定するために使用される。
ステップ428では、ロードイベントに関連する性能の測定値が、メモリのデータ構造または永続的な記憶装置に記憶される。たとえば、現在の時間は、ロード時間としてクッ
キーに記憶される。別の例では、応答時間は、ロード時間とサブミット時間との差として計算され、応答時間はクッキーに記憶される。
性能測定値に対するクライアント側の応答
性能の測定を行なうことに加え、途中で捉えられた項目に付加されるインスツルメンテーションは、性能の測定に基づいて動作を行なうように構成してもよい。たとえば、ステップ430では、測定された性能が最低限度の性能のしきい値と比較される。性能が最低限度の性能のしきい値を下回る場合、制御はステップ432に移り、低下した性能に応答する。たとえば、最低限度の性能のしきい値が最大許容応答時間と関連付けられる場合、最大応答時間を上回る応答時間は、最低限度の性能のしきい値を下回る性能に対応する。
制御がステップ432に移ると、コードはウェブブラウザに低下した性能に対応させる。たとえば、ステップ432では、ブラウザは、応答時間が最大許容応答時間を超えているという通知をユーザ組織に送る。実施例によっては、サービスプロバイダのシステム管理者に通知が送られる。また実施例によっては、応答時間が過剰であることをユーザに知らせ、ユーザにシステムについてのトラブル報告を記録するように促すか、またはより大きなキャッシュまたは大きな帯域幅などのより多くのリソースを入手するように促すダイアログボックスがウェブブラウザのユーザに呈示される。一実施例では、より高速なインターネットアクセス技術の広告などの広告がユーザに示される。実施例によっては、通知は、ネットワーク上で実行するサーバなどの別のプロセスにメッセージを送り、何らかの動作を自動的に行なうことを含む。そのような自動的な動作は、アプリケーションによって作成された項目を容易に通信およびレンダリングすることのできるように小型または単純な項目に改訂することを含む。実施例によっては、クッキー内の性能測定値は、通知ステップ中に他のプロセスに送られる。
ステップ430および432は、後述するように、しきい値を下回る性能に対する応答が、クライアントでなくサーバによって、サーバに返される性能の測定値に基づいて行なわれる場合に省略される。
性能の測定値の報告
性能測定を行なうことに加え、途中で捉えられた項目に付加されるインスツルメンテーションは、性能の測定値を何らかの実体にネットワーク上で報告するように構成してもよい。実体は、たとえば、ウェブサーバか、または性能が測定されているサービスのサービスプロバイダによって制御されるアプリケーションであってもよい。
性能の測定値をサービスプロバイダに通信するためにさまざまな技術が使用され得る。たとえば、ステップ434では、データを含まないダミーの画像ファイルに対する要求がサーバに行なわれる。たとえば、サーバ側にDummy.gifの要求が行なわれる。この要求は、ウェブブラウザに性能の測定値を備えたクッキーを自動的にサーバに送らせる。ファイルDummy.gifはデータを含まないため、クライアント装置の表示装置には何も追加されず、このステップはユーザに対して透過的である。別の実施例では、ステップ434は省略され、クッキーは、ユーザがサーバから新しいページを要求したときなど、後にサーバに送られる。ステップ434またはそれに相当するものが省略されると、性能の測定値のサーバに対する報告は、後の定められない時間に行なわれるため、怠惰な報告と呼ばれる。
次に、制御はステップ436に移り、元々のウインドウロードイベントハンドラが呼出される。ステップ436が省略される場合、またはステップ436が完了した後、制御はウェブブラウザの組込みの方法に移り、カーソルおよびキーのユーザによる操作の監視が行なわれる。
性能測定値に対するサーバ側の応答
実施例の中には、サービスプロバイダのためにネットワークに接続される装置上で実行するプロセスが最低限の許容性能のしきい値を下回る性能を検出し、それに応答するものもある。たとえば、サーバ装置102上で実行する性能分析および応答プロセス194は、しきい値を下回る性能を自動的に検出し、それに応答して何らかの動作を行なう。サーバ側の応答は、図6に関して後述する。
アンロードイベントハンドラ
図4Cは、一実施例による、クライアントに送られる変更された項目に含まれるアンロードイベントハンドラ440を示すフローチャートである。図5Aに関して後述される方法などの方法によると、イベントハンドラ440は、アンロードイベントに関連付けられる。入力バッファからページがアンロードされ、次のページのための道が空けられると、ルーチンが呼出され、これが図4Cのステップを行なう。このイベントハンドラの目的は、実際にダウンロードされたフレームセットのページ数を計数することである。
ステップ442および443は、図4Aのステップ402および403に対応する。ステップ442および443は、コードを実行しているブラウザがそのコードでテストされていないとき、インスツルメンテーションイベントハンドラの他のステップを行なうのを省く。ステップ442および443は、図5Aに関して後述されるように、到着時実行コードが類似のチェックを示す場合に省略される。
ステップ446では、ページカウンタが増分される。カウンタは、メモリまたは永続的な記憶装置にあってもよい。カウンタが検索され、カウンタに記憶される値が1ずつ増分され、新しい値が記憶される。新しいフレームセットが要求されるときなど、カウンタがリセットされている場合、カウンタは検索されるときにゼロなどの無効な値を有する。カウンタの値が無効であるとき、ステップ446はカウンタの新しい値を「1」にセットする。実施例によっては、ページカウンタの値はクッキーに記憶される。
ステップ448では、アンロードイベントに対する元々のイベントハンドラがあれば呼出される。ステップ448の完了後、制御はウェブブラウザの組込みの方法に戻り、ユーザの操作およびシステムを監視し、後続のイベントが生成される。
カーソルイベントハンドラ
ユーザによるカーソルの動きは、クライアント装置の表示装置上に呈示される項目上でユーザによって費やされる労力に関連する。カーソルがブラウザウインドウ上で動かされると、通過したウェブページ要素を代わる代わる活性化する。たとえば、図3に関して、カーソル361が図示の位置からテキスト領域364、リンク366a、リンク366b、フォーム370、入力フィールド372bに動かされると、これらウェブページ要素の各々は、ユーザがそれらのうちのどれにも一時停止しないか、またはクリックしない場合でも、順番に活性化する。カーソルがウェブページ要素を活性化するたび、ウェブブラウザはその要素に対してフォーカスイベントを発行する。これらイベントの計数は、カーソルの動きの測定値である。また、ユーザがウェブ要素を選択しキーを押すなどしてウェブページ要素を変更すると、ウェブブラウザは、その要素に対して変更イベントを発行する。たとえば、ユーザがカーソルを動かし、選択することによって入力フィールド372bを選択すると、フィールド372bに対してフォーカスイベントが発行され、入力フィールド372bに対してクリックイベントが発行される。ユーザが、たとえば、数字「7」のキーをタイプすると、入力フィールド372bに対して変更イベントが発行される。ユーザが続いて数字「321」のキーをタイプすると、ウェブブラウザは、入力フィールド372bに対して、さらに3つの変更イベントを発行する。呈示された項目でユーザによって費やされた労力の合計の測定値は、フォーカスイベントおよび変更イベントを組合せ
ることで得られる。これ以降、フォーカスイベントおよび変更イベントをまとめてカーソルイベントと称する。実施例によっては、リンクまたはサブミットボタンではないウェブページ要素のクリックは、カーソルイベントに含められる。
図4Dは、一実施例による、クライアントに送られる変更された項目に含まれるカーソルイベントハンドラ460を示すフローチャートである。イベントハンドラ420は、図5Bに関して後述されるように、フォーカスイベントおよび変更イベントに関連付けられる。したがって、ユーザがウェブページ要素上にカーソルを動かすか、または入力フィールドの値を変更すると、カーソルイベントが発行される。このイベントハンドラの1つの目的は、ページがレンダリングされたときから新たなページが要求されるときまでの間のカーソルイベントを記録することである。
ステップ462および463は、図4Aのステップ402および403に対応する。ステップ462および463は、コードを実行しているブラウザがそのコードでテストされていないとき、インスツルメンテーションイベントハンドラの他のステップを行なうのを省く。ステップ462および463は、図5Aに関して後述される実施例のように、フレームセットまたはページのロード中にすぐに実行されるコードの第1の部分が同様のチェックを行なう場合に省略される。
ステップ466では、カーソルの動きのカウンタが増分される。カウンタはメモリまたは永続的な記憶装置にあってもよい。この実施例では、カウンタはクッキー内に記憶される。カウンタが検索され、カウンタに記憶される値が増分され、新しい値が記憶される。実施例によっては、カウンタは「1」ずつ増分される。また実施例によってはカウンタはフォーカスイベントに対しては「1」ずつ、変更イベントに対しては「2」ずつ増分され、どのような変更を行なうかを決定し、適切なキーを探して押すためのユーザ側の大きな労力を反映する。また別の実施例では、他の増分の値が適用される。新しいフレームセットが要求されるときなど、カウンタがリセットされている場合、カウンタは検索されるとき、値ゼロなどの無効な値を有する。カウンタの値が無効であると、ステップ466は、カウンタの新しい値を増分の値、たとえば、フォーカスイベントに対しては「1」、変更イベントに対しては「2」などをセットする。
次に、制御はステップ468に移り、元々のカーソルイベントハンドラがあれば呼出す。ステップ468の完了後、制御はウェブブラウザの組込みの方法に移り、カーソルおよびキーのユーザによる操作の監視を行なう。
到着時実行コード
図4A、4B、4Cおよび4Dは、性能測定コードに含まれるイベントハンドラを示す。これらステップは、ページがロードされる前でなく、ウェブブラウザによる何らかの動作に応答して実行される。図5Aは、ブラウザが項目内のコードに遭遇するとすぐに、ウェブブラウザがダウンロードされているフレームセットの第1のページに対してロードイベントを発行する前に実行されるステップを示す。一実施例では、コードは、図2のステップ280の中で元々の項目のHTMLステートメントの端部に挿入されるため、ウェブブラウザは元々の項目の後ろでコードに遭遇する。別の実施例では、コードは図2のステップ208の中で元々の項目のステートメントの中のHTMLステートメント、たとえばヘッダタグなどに挿入されるため、ウェブブラウザは元々の項目の一部のステートメントの前でコードに遭遇する。
図5Aは、図1に示される予め規定された性能測定コード108の一実施例による、クライアントに送られる変更された項目に含まれる性能測定コード108′を表わすフローチャートの第1の部分である。性能測定コード108′は、図4A、4B、4Cおよび4
Dに示されるインスツルメンテーションイベントハンドラのためのコードを含み、これらインスツルメンテーションイベントハンドラを元々の項目のウェブページ要素に関連付ける。
ステップ502および504は、図4Aのステップ402および403に対応する。ステップ502および504は、コードを実行しているブラウザがそのコードでテストされていないときに、性能測定コードの他のステップを行なうのを省く。ウェブブラウザがコード108′でテストされていない場合、制御はステップ190に移り、この方法は終了する。ステップ502および504を含む実施例では、イベントハンドラ内の対応するステップは省略してもよい。たとえば、ステップ402、403、422、423、442、443、462および463は、ステップ502および503を含む実施例では省略される。
ステップ506では、インスツルメンテーションイベントハンドラのうちの1つによって書かれた、アプリケーションに対するインスツルメンテーションクッキーが既にクライアント装置にあるかが判定される。ない場合、ダウンロードされているフレームセットは、そのアプリケーションにとって第1のものである。応答時間の測定は、サブミット時間が記憶されることを必要とするため、第1のフレームセットに対して何らかの特別な処理を行なわない限り、第1のフレームセットに対する応答時間は得られない。ステップ506で、アプリケーションに対するインスツルメンテーションクッキーが存在しないと判定されると、アプリケーションにとって第1のフレームセットがダウンロードされており、制御はステップ508に移り、特別な処理を行なって第1のフレームセットについての応答時間を捕捉する。さもなければ、制御はステップ510に移る。実施例によっては、第1のフレームセットを検出するためのステップは含まれない。これらの実施例では、ステップ506は省略され、制御はテストされたブラウザに対して無条件にステップ510に移る。ステップ508によって表わされる特別な処理は、詳しく後述する。
ステップ510では、元々の項目に含まれるウェブページ要素に関連付けられる元々のイベントハンドラが得られる。イベントハンドラをウェブページ要素に関連付けることは、イベントハンドラのウェブページ要素への登録と称されることがある。実施例によっては、元々のイベントハンドラは、ウェブブラウザから要求するか、または元々の項目から直接読出すことができる。一部のブラウザでは、イベントハンドラ名はイベントおよびページ要素によって決定される。たとえば、元々のイベントハンドラが、ブラウザウインドウに関連付けられるロードイベントに対して与えられる場合、元々のイベントハンドラは、1つのブラウザに対しては「window.onLoad」と名付けられる。(異なるブラウザでは、イベントハンドラを、たとえば、frameset.onloadなど、他の呼び方をすることがある。)この方法を説明するため、例示的な元々の項目を設けるが、これは図3に示されるフレームセットを作成し、フレームセットに関連するロードイベントに対するwindow.onLoadと呼ばれるイベントハンドラ、およびフレームセットの第1のフレームのページ上のフォーム370に関連するサブミットイベントに対するFormA.onSubmitと呼ばれるイベントハンドラを含む。この例では、他の元々のイベントハンドラは設けられない。元々の項目によると、リンク366のクリックは、各リンクに関連付けられるURLアドレスにあるページを要求することで、完全にブラウザによって処理される。
ステップ512では、ウインドウおよびページレベルイベントに対する元々のイベントハンドラは、インスツルメンテーションイベントハンドラによって保存かつ置換えられ、インスツルメンテーションイベントハンドラは適切なウインドウおよびページレベル要素に登録される。たとえば、元々のイベントハンドラ「window.onLoad」は、図4Bに示されるインスツルメンテーションイベントハンドラ420によって置換えられる。図4Bに示されるイベントハンドラが「F4B_handler」と名付けられる場合、登録の置換えは、次
の形のJava(R)Scriptステートメントで実現される。
orig_window_load=wondow.onLoad;
window.onLoad=F4B_handler;
「orig_window_load」という名前は、ステップ436でインスツルメンテーションハンドラ420によって使用される。呼出の形はブラウザによって異なるため、ステップ436を行なうためのJava(R)Scriptは次の形である。
if(browserT=“IE”)orig_window_load();
if(browserT=“NETSCAPE”)orig_window_load(e);
ここで、「browserT」は、検出される実際のブラウザの種類を示す変数であり、たとえば、ステップ502では、IEは、INTERNET EXPLORERラウザを示し、NETSCAPEは、NETSCAPEブラウザを示し、eは、ウェブブラウザによってwindow.onLoadハンドラに渡されるイベントオブジェクトである。
例示的な項目のページおよびウインドウレベルには他に元々のイベントハンドラはないため、ステップ512では他に登録の置換えは行なわれない。しかしながら、ページレベルのインスツルメンテーションイベントハンドラはページに登録される。例示的な実施例では、図4Cに示されるページアンロードイベントに対するインスツルメンテーションイベントハンドラ440が使用される。例示的な実施例では、図5Bに示されるページロードイベントに対するインスツルメンテーションイベントハンドラ520が使用される。図5Bに示されるページロードイベントに対するインスツルメンテーションイベントハンドラ520が「F5B_handler」と名付けられ、ページアンロードイベントについてのインスツルメンテーションイベントハンドラが「F4C_handler」と名付けられる場合、一実施例のための登録は、次の形のJava(R)Scriptステートメントで実現される。
frame1.page.onLoad=F5B_handler;
frame1.page.onUnload=F4C_handler;
frame2.page.onLoad=F5B_handler;
frame2.page.onUnload=F4C_handler;
frame3.page.onLoad=F5B_handler;
frame3.page.onUnload=F4C_handler;
frame4.page.onLoad=F5B_handler;
frame4.page.onUnload=F4C_handler;
ステップ514では、フレームセット内のフレーム数が元々の項目の情報から判定され、ステップ424で使用するために図4Bに示されるロードイベントハンドラ420に保存される。コードも、クライアント装置にクッキーに記憶されるパラメータに対応するメモリ内のパラメータを無効な値にリセットさせる。たとえば、サブミット時間、ロード時間、カーソルの動きの数を表わす変数は、ゼロにリセットされる。
次に、コードのこの部分は終了される。続いて、現在のフレームセットの第1のページがロードを終了する。第1のページがロードを終了すると、ウェブブラウザはフレーム1に対してページロードイベントを発行する。図5Bのインスツルメンテーションイベントハンドラは、フレーム1に対するページロードイベントに登録されたため、イベントハンドラが呼出される。次に、制御は、図5Bに示されるようにステップ520に移る。
図5Bは、一実施例による、クライアントに送られる変更された項目に含まれる性能測定コード108′を示すフローチャートの第2の部分である。このコードは、図4Bに示されるウインドウロードイベントハンドラ420の実施例を含むページロードイベントハンドラ520のある実施例を含む。この実施例は、ウインドウロードイベントが用いられ
ないときに使用される。ウインドウロードイベントを用いる実施例では、図5Bに示されるように、制御はステップ420に移るのではなく、ウェブブラウザの組込みの方法に戻る。
ステップ522では、ページロードイベントに対する元々のイベントハンドラがあるかが判定される。あれば、制御はステップ524に移り、ページロードイベントに対する元々のハンドラが呼出される。これを行なうのは、アプリケーションの中には、動的に生成された1つまたは複数のウェブページ要素をページイベントハンドラに挿入するものがあるためである。これらハンドラは、たとえば、1つまたは複数のリンクをページに付加させることができる。元々のページロードイベントハンドラを呼出すことで、アプリケーションによって提供されるすべてのウェブページ要素は、制御がステップ526に移るときまでにページ上にある。例示的な項目では、元々のページロードイベントハンドラはないため、制御は、ステップ526からステップ522に直接移る。
ステップ526では、コードはウェブブラウザにページ上の各リンクを調べさせ、インスツルメンテーションハンドラ400を挿入させて、元々のクリックイベントハンドラを置換える。例示的な項目では、5つのリンク366があり、クリックイベントに対する元々のイベントハンドラはない。リンク366a、366b、366c、366d、366eが、それぞれ、LinkA、LinkB、LinkC、LinkD、LinkEと識別され、かつインスツルメンテーションイベントハンドラ400が「F4A_handler」と名付けられる場合、登録は、次の形のJava(R)Scriptステートメントで実現される。
LinkA.onClick=F4A_handler;
LinkB.onClick=F4A_handler;
LinkC.onClick=F4A_handler;
LinkD.onClick=F4A_handler;
LinkF.onClick=F4A_handler;
ステップ528では、コードはウェブブラウザにページ上の各フォームを調べさせ、インスツルメンテーションハンドラ400を挿入させて、元々サブミットイベントハンドラを置換える。例示的な項目では、1つのフォームがあり、「FormA.onSubmit」と呼ばれるサブミットイベントに対する元々のイベントハンドラを有する。登録の置換えは、次の形のJava(R)Scriptステートメントで実現される。
orig_form_submit=frame1.FormA.onSubmit
frame1.FormA.onSubmit=F4A_handler.
「orig_form_submit」という名前は、イベントハンドラのステップ410でインスツルメンテーションハンドラによる呼出で使用される。呼出の形はブラウザによって異なるため、ステップ410を行なうためのJava(R)Scriptステートメントは次の形である。
if(browserT=“IE”)orig_form_submit();
if(browserT=“NETSCAPE”)orig_form_submit(e);
ステップ530では、コードはウェブブラウザにページ上の各要素を調べさせ、インスツルメンテーションハンドラ460を挿入させて、元々のフォーカスイベントハンドラおよび変更イベントハンドラを置換える。ハンドラ460は、上述のようにカーソルの動きのカウンタを増分させる。例示的な項目では、第1のフレームのページ上の少なくとも10のウェブページ要素、テキストボックス364、5つのリンク366、フォーム370およびその要素、2つの入力フィールド372ならびにサブミットボタン374があるが、フォーカスイベントおよび変更イベントに対する元々のイベントハンドラはない。インスツルメンテーションイベントハンドラ460が「F4D_handler」と名付けられる場合、登録は次の形のJava(R)Scriptステートメントで実現される。
ElementA.onFocus=F4D_handler
ElementA.onChange=F4D_handler
ここで、10のウェブページ要素の各々が「ElementA」と指定された要素を順に置換える。
実施例によっては、制御は図4Bに示されるステップ420に移り、図5Bに示されるようにそのロードイベントハンドラのステップを続ける。そのような実施例は、異なるフレーム内の1つまたは複数のページのウインドウに対するロードイベントと個々のページに対するロードイベントとの区別をしないブラウザにとっては有用である。
フレームセットの異なるフレーム内のすべてのページがロードされると、制御は最終的にステップ428に移り、応答時間、またはサブミット時間およびロード時間、もしくはその両方をクッキーに記憶する。途中、制御は、図4Dに示されるカーソルの動きイベントハンドラ460に何度か移り、これはカーソルの動きの計数をクッキーに記憶する。最終的にクッキーは、1つまたは複数のページについての各フレームセットの応答時間およびカーソルの動きを提供する測定値とともにサーバに返される。
インスツルメンテーションコードの作成
実施例によっては、アプリケーションの開発者は、クライアント側の性能を測定するために、インスツルメンテーションコードを手動で項目に挿入する。しかしながら、図示の実施例では、変更された項目107に含まれるコードは、変更の条件が満たされる場合、アプリケーション104によって作成された項目105に自動的に挿入される。
例示的な実施例のように、インスツルメント挿入プロセス106にとって、所望のインスツルメンテーションがアプリケーションの開発者に対して独立的かつ透過的に自動的に行なわれることは有利である。コード108が開発される前に既に作動しているアプリケーションおよび開発されたアプリケーションを含め、サービスプロバイダによって制御されるすべてのサーバ上のすべてのアプリケーションによって作成されたすべての項目に付加的な労力なしにコードを挿入することができることが1つの利点である。
もう1つの利点は、自動的な挿入によって、すべてのアプリケーションの性能を測定するための一貫したプロセスが提供される点である。各アプリケーションの開発者が別々のプロセスを実施して応答時間などの性能を測定した場合、測定値は必ずしもアプリケーション間で比較できるわけではない。
インスツルメンテーションの選択肢
上述の例示的な実施例では、インスツルメンテーションコードは、ウェブブラウザに送られる選択されたHTMLページに挿入されるJAVA(R)SCRIPTTMである。(これ以降、JAVA(R)SCRIPTTMはJava(R)Scriptと称する。)Java(R)Scriptは、HTMLページをレンダリングするウェブブラウザによって解釈されるスクリプト言語である。
ここまではJava(R)Scriptを使用する実施例を説明したが、他の実施例は、クライアント装置に性能を測定させ、結果的な測定値に基づいて動作を行なわせる他の言語の命令を含んでもよい。たとえば、コードは、VisualBasicScript(VBScript)などの、ウェブブラウザによって解釈される別のスクリプト言語を含んでもよい。さらにコードは、NETSCAPETMNAVIGATORTMウェブブラウザから起動されるプラグインアプリケーション、MICROSOFTTMINTERNET EXPLORERTMウェブブラウザから起動されるACTIVEXTMアプリケーション、上述のウェブブラウザの両方から起動されるJAVA(R)TMアプレットおよび他のものなどの、クライアントプロセスから独立して作動するが、クライアントプロセスから起動されるプロセ
スによって実行される命令を含んでもよい。
たとえば、コードはJAVA(R)TM(これ以降、Java(R)と称する)を含んでもよい。ウェブブラウザなどの多くのクライアントプロセスは、アプレットでJava(R)コードを受取るように装備される。アプレットのJava(R)ステートメントは、Java(R)仮想マシン(JVM)と呼ばれるプロセスによって解釈される。Java(R)アプレットを受取ったことに応答して、クライアントプロセスはJVMが既にロードされていない場合はこれをロードし、JVMを使用してJava(R)アプレットのステートメントを実行する。Java(R)Scriptよりも強力ではあるが、Java(R)で書かれたコードは大きくなりがちで、クライアント装置の通信リソースをより多く消費する。さらに、JVMをロードしてJava(R)アプレットを実行することは、クライアント装置のかなりのメモリおよびプロセッサのリソースを消費する傾向がある。したがって、Java(R)コードを使用してクライアント側の性能を測定する実施例は、Java(R)Scriptを使用する実施例よりもクライアント側の性能を大きく低下させ得る。
図示の実施例のJava(R)Scriptは、クライアント上で実行されると、あらゆるクライアントおよびあらゆるアプリケーションのすべてのHTML項目についての「クリックしてから表示されるまでの」応答時間の値、およびカーソルの動きの合計を提供するが、アプリケーションの開発者を関与させることはなく、クライアントのユーザに手動のステップを行なうことを要求することもなく、クライアント装置に何らかのソフトウェアを永久的にインストールすることもない。
第1のページに対する応答時間のインスツルメンテーション
第1のページに特別なハンドリングが与えられなければ、第1のページをレンダリングするための応答時間はクッキーに記憶されない。応答時間は、サブミットイベントからフレームセットロードイベントまでの時間として計算される。しかし、第1のフレームセットを要求したページはインスツルメントを取り付けられていないため、サブミット時間を記録していない。そのページは、アプリケーションのためのクッキーすら作成していない。多くのページを備え、かつページの第1のフレームセットが単純であるアプリケーションなどの場合は、この状況は許容される。サービスプロバイダは、第1のページよりも後続のページおよびフレームセットに大きな関心を持っている。しかしながら、別の場合では、第1のページの応答時間が非常に望まれる。たとえば、第1のページは、サービスプロバイダにとって最も重要なページであり得る。また、第1のページは、ユーザがそのサイトを継続するかを判定する上で非常に重要であり得る。さらに、ウェブサイトのページの統計的なサンプリングは、分離されたページについての応答時間を得ることを利用している。以下に説明するいくつかの実施例は、第1のページまたは分離されたページに対する応答時間を提供する。
一実施例では、サービスプロバイダは、ある所与のページ、たとえば「home.jsp」がクライアントプロセスによって要求される最初のページであると予想する。サービスプロバイダは、この第1のページの名前をつけなおし、元々の名前を備えた場所を保持するダミーのページを生成する。ダミーのページはサブミットイベントを生成してサブミット時間を記録し、次に、名前をつけなおした第1のページを要求する。たとえば、第1のページは「home1.jsp」と名前をつけなおされ、元々の名前「home.jsp」を備えた新しいページが生成され、これが自動的にサブミットイベントを発行し、ページ「home1.jsp」を要求する。クライアントプロセスのユーザは、home.jspと名付けられたページを以前と同じように要求するが、自動的にページ「home1.jsp」を受取る。この実施例は、「home1.jsp」を要求するダミーのページにインスツルメントを取り付けるため、「home1.jsp」をレンダリングするための応答時間が得られる。しかしながら、サービスプロバイダが、クライアントプロセスが要求する最初のページを予測できない場合、この実施例は有用ではない
第2の実施例では、第1の要求がクライアントプロセスから受取られるたびに、場所を保持するダミーのページが動的に生成される。第1の要求は、クライアント装置のアプリケーションのためのクッキーが存在しないことに基づいて推測される。この実施例は図5Aに示される。上述のように、ステップ506では、ページが完了される直前にウェブブラウザによって実行されるコードは、アプリケーションのためのクッキーが存在するかを判定する。存在しない場合、ダウンロードされているページは、ブラウザによって要求される最初のページであり、制御はステップ508に移る。ステップ508では、コードはウェブブラウザにダミーのページを構築させ、これは元々のページへのリンクのためのリンククリックイベントハンドラを呼出すページロードイベントハンドラを含む。次に、制御は図4Aに示されるステップ400に移り、クッキーを作成し、サブミット時間を記録し、ページを要求する。たとえば、ウェブブラウザがステップ506でクッキーがないと判定したときにアプリケーションからページP1がダウンロードされている場合、ウェブブラウザは、ダミーのページを構築する。ダミーのページには要素がないが、ロードイベントハンドラを含み、これがリンクをページP1にセットし、リンククリックイベントハンドラ400を呼出す。サブミット時間がイベントハンドラのクッキーに記録されると、ウェブブラウザはリンクの処理を続け、ページP1を要求する。このとき、インスツルメントを取り付けられたページP1が返されると、含まれるコードがステップ506でウェブブラウザにクッキーを検出させ、ステップ510および以下のステップを行なわせる。
別の実施例では、統計的なサンプリングのために選択されたページなどの分離されたページの応答時間が判定される。この実施例では、予め規定されたJava(R)Scriptコードの2つのファイルが設けられる。第1のファイルは、図2のステップ204および206で統計的なサンプルが取られると判定されたときに元々の項目に挿入される。第1のファイルは、ウェブブラウザにサブミット時間を捕捉させ、サブミット時間およびインスツルメントを取り付けられるべき次のページを示すデータを備えた特別なクッキーを作成させるコードを含む。第2のファイルは、ページの要求とともに特別なクッキーが受取られたときに元々の項目に挿入される。第2のファイルは、ウェブブラウザにロード時間を捕捉かつ記録させ、結果を報告させ、特別なクッキーを削除させるコードを含む。この実施例では、ステップ204は、特別なクッキーが存在するかを判定するステップを含み、ステップ206は、特別なクッキーが存在する場合に満たされる条件を探すステップを含み、ステップ208は、特別なクッキーが存在する場合に第1のファイルの代わりに第2のファイルを挿入するステップを含む。
例示的な動作
表1は、一連の時間でのクライアント装置の状態を説明することによって、この方法の動作を表わす。クライアント装置の状態は、表示装置に呈示されるページ(「ページ」の欄)、挿入されたコードでページにインスツルメントが取り付けられているか(「インスツルメントされているか」の欄)、その時間に発行されたウェブブラウザのイベント(「イベント」の欄)、性能測定インスツルメントコードによって作成されたクッキーが存在するか(「インスツルメントクッキー」の欄)、サブミット時間、ロード時間、カーソルの動きの計数に対してクッキーに記憶された値(それぞれ、「サブミット時間」、「ロード時間」、および「カーソル計数」の欄)よって、各時間(「時間」の欄)について表1で説明される。
Figure 0004334232
この例では、性能測定インスツルメントを提供するサーバは、フレームF1ならびにF2を有する第1のフレームセットS1、および単一のページからなる第2のフレームセットS2を作成するアプリケーションを含む。フレームF1内のページは、図3に示される第1のフレーム内のページと同じである。
時間t0では、ウェブブラウザは、クライアント装置の表示装置にユーザのホームページを呈示している。ページにはインスツルメントは取り付けられておらず、ウェブブラウザはクライアント側の性能を測定するように構成されていない。ユーザはまだ動作していないため、インスツルメントクッキーはまだ作成されていない。したがって、サブミット時間、ロード時間またはカーソルの動きの計数に対する値はない。
時間t1では、ユーザはアプリケーションからのサービスを要求する。要求は、当該技術分野で公知の方法であればどのような方法で開始してもよい。たとえば、ユーザは、ウェブブラウザのアドレスバーにアプリケーションのURLをタイプしてもよいし、またはユーザはアプリケーションの以前の使用に基づくブラウザのブックマークに記憶されたリンクをクリックしてもよいし、もしくはユーザのホームページ上のリンクをクリックしてもよい。どの場合でも、ウェブブラウザは、フレームセットS1を提供するアプリケーションへのリンクのクリックに相当するイベントを発行する。ユーザのホームページはインスツルメントを取り付けられていないため、ウェブブラウザはクッキーを作成せず、またはサブミット時間を記憶しない。アプリケーションに対する要求はサーバに送られる。
要求に応答して、アプリケーションはフレームセットS1に対して項目を生成し、サーバは、図5Aに示されるロード中に実行される命令および図5B、図4A、図4B、図4Cおよび図4Dに示されるインスツルメンテーションイベントハンドラに対して上述の予め規定されたJava(R)Scriptを挿入してその項目を変更する。変更された項目のロード中、ウェブブラウザは、図5Aに示されるステップを行なうためのコードを実行し始める。ステップ506では、ウェブブラウザは、インスツルメントクッキーがまだ存在しないと判定するため、制御はステップ508に移る。ステップ508によって表わされるコードは、ここでは「Dummy」と名付けられ、アプリケーションへのリンクをクリックするページロードイベントハンドラおよびリンクイベントのクリックに対するインスツルメンテーションハンドラ400を備えるダミーページをウェブブラウザに構築させる。
時間t2では、白紙のダミーのページがロードされ、クライアント装置の表示装置に呈示される。ウェブブラウザはページロードイベントを発行する。インスツルメントクッキーはまだ作成されておらず、サブミット時間、ロード時間またはカーソル計数の値はセットされていない。
ロードページイベントに応答して、時間t3では(おそらく、時間t2のマイクロ秒後)、ウェブブラウザは、リンククリックイベントを発行し、リンクのクリックに対するインスツルメンテーションイベントハンドラ400を実行する。図4Aに示されるように、このインスツルメンテーションイベントハンドラ400は、ステップ404で現在の時間t3を判定し、ステップ406でその時間をサブミット時間としてクッキーに記憶する。無効な値ゼロを有するロード時間およびカーソル計数の値も、ステップ406の間にクッキーに記憶される。表1は、時間t3では、クッキーがサブミット時間としての値t3を備えて存在することを示す。ステップ408では、クライアント装置で実行しているウェブブラウザの種類およびバージョンなどの補助的なデータがクッキーに記憶される。この例では、リンクのクリックに対する元々のイベントハンドラはないため、ステップ410は動作を行なわない。次に、制御はウェブブラウザの方法に戻り、サーバ上のアプリケーションからのサービスを要求する。クッキーは、要求とともにウェブブラウザによって自動的にサーバに送られる。
要求に応答して、アプリケーションは再びフレームセットS1に対して項目を生成し、サーバは予め規定されたJava(R)Scriptを挿入することで項目を再び変更する。変更された項目のロード中、表1の時間t4では、ウェブブラウザは図5Aに示されるステップを行なうためのコードを再び実行し始める。ステップ506では、ウェブブラウザはインスツルメントクッキーが存在すると判定するため、制御はステップ510から514まで移動する。ステップ510および512によって表わされるコードは、ウェブブラウザに、ウインドウおよびページレベルイベントに対する元々のイベントハンドラを探させ、それらをウインドウおよびページレベルイベントに対するインスツルメンテーションイベントハンドラで置換えさせる。この例では、そのようなイベントに対する元々のイベントハンドラはない。windows.onLoadイベントハンドラは、図4Bに示されるインスツルメンテーションハンドラ420にセットされ、page.onLoadイベントハンドラは図5Bに示されるインスツルメンテーションハンドラ520にセットされ、page.onUnLoadイベントハンドラは、図4Cに示されるインスツルメンテーションハンドラ440にセットされる。ステップ514では、フレームセット内のページ数が保存される。例示的なフレームセットS1の情報によると、フレームセットには2つのページがあるため、値2が、フレームセットのページ数として、たとえば、Npagesと名付けられた変数に保存される。クッキーの作成および更新に使用される他のパラメータも無効な値にセットされる。たとえば、ページカウンタ、カーソルの動きのカウンタ、サブミット時間およびロード時間は、ゼロにセットされる。しかしながら、ここではクッキーは更新されない。
時間t5では、フレームセットS1の第1のフレームのページF1がロードされ、表1の「ページ」欄のS1.F1で示される。ウェブブラウザは、ページS1.F1に対してページロードイベントを発行し、図5Bに示されるページロードイベントに対するインスツルメンテーションイベントハンドラ520が実行される。ステップ522では、元々のページイベントハンドラはないと判定されるため、制御は、ステップ526、528および530に移り、ページ上のさまざまなウェブページ要素に対してリンクのクリックイベント、サブミットイベント、フォーカスイベントおよび変更イベントに対するイベントハンドラを登録する(図3の第1のフレームに示されるページについて説明済み)。この例では、ウェブブラウザはウインドウレベルロードイベントを発行できるため、制御は、ウェブブラウザによってウインドウロードイベントが発行されるまでステップ420に移らない。代わりに、制御はウェブブラウザの組込みの方法に移る。ここではクッキーには変更は行なわれない。
ウェブブラウザがウインドウレベルロードイベントを発行しない場合、制御はステップ420に移り、ステップ424でフレームセットのすべてのページがまだロードされていないと判定し、次に、制御はウェブブラウザの組込みの方法に戻る。
時間t6では、ウェブブラウザはページS1.F1に対してアンロードイベントを発行し、図4Cに示されるページアンロードイベントに対するインスツルメンテーションハンドラ440を起動する。ステップ446では、ページカウンタが増分される。ページカウンタは最初に呼出されたときは無効な値を有するため、ページカウンタは1にセットされる。クッキーには変更は行なわれない。
時間t7では、フレームセットS1の第2のフレーム内のページF2がロードされ、表1の「ページ」欄のS1.F1,F2で示される。ウェブブラウザはページS1.F2に対してページロードイベントを発行し、図5Bに示されるページロードイベントに対するインスツルメンテーションハンドラ520が実行される。ステップ522では、元々のページイベントハンドラがないと判定されるため、制御はステップ526、528および530に移り、ページ上のさまざまなウェブ要素のリンクのクリックイベント、サブミットイベント、フォーカスおよび変更イベントに対してイベントハンドラを登録する。この例では、ウェブブラウザはウインドウレベルロードイベントも発行するため、制御はステップ420に移る。ウェブブラウザがウインドウレベルロードイベントを発行しない場合、制御は、ページロードイベントハンドラ520内からステップ420に移る。
ステップ424では、フレームセット内のすべてのページがロードされたと判定される。なぜなら、ページカウンタ(現在のページは含まず)に現在のページのための1を加えると変数NPagesに保存されるフレームセットのページ数と等しいためである。ステップ426では、現在の時間がt7であると判定される。ステップ428では、クッキーは、ロード時間としてのt7で更新される。表1は、サブミット時間のt3、ロード時間のt7および時間t7でのカーソル計数の0を含むことを示す。実施例によっては、差t7−t3も応答時間として記憶される。この例では、ステップ430および432は含まれず、制御はステップ434に直接移る。
時間t8では、ステップ434で、Dummy.gifと呼ばれる画像ファイルに対する要求が生成され、サーバに送られる。ウェブブラウザは、自動的に要求にクッキーを含めるため、時間サブミット時間、ロード時間およびt8でのカーソル計数の値はサーバに送られ、サーバのクッキーのログに記憶される。Dummy.gifファイルはデータを含まないため、表示装置上には何の変化も示されない。次に、クッキーの値はゼロにリセットされる。怠惰な報告を用いる実施例では、ステップ434は省略され、クッキーは、ブラウザがサーバ
上のアプリケーションからページを次に要求したときに報告される。
この例では、ロードウインドウイベントに対する元々のイベントハンドラはないため、ステップ436は動作を行なわず、次に、制御はウェブブラウザの組込みの方法に移る。ウェブブラウザは、フレームセットのウェブページ要素のユーザによる操作を監視する。この例では、ユーザは、図3の第1のフレームに示されるページに似た第1のフレームのページ上の各要素の上にカーソルを動かす。ユーザが各ページ要素上にカーソルを動かすと、ウェブブラウザはフォーカスイベントを発行し、図4Dに示されるカーソルイベントに対するインスツルメンテーションハンドラ460を呼出し、これがステップ466で、クッキーに記憶されるカーソルの動きのカウンタを増分させる。さらに、ユーザは入力フィールド372aに3文字のデータを入力し、入力フィールド372bに4文字のデータを入力する。ユーザが各文字を入力すると、ウェブブラウザは変更イベントを発行し、図4Dに示されるカーソルイベントに対するインスツルメンテーションハンドラ460を呼出し、これがステップ466で、クッキーに記憶されるカーソルの動きのカウンタを増分させる。この例では、各変更は各フォーカスと同じものとして扱われ、増分1として記録される。
時間t9では、「イベント」欄に示されるように、10のフォーカスイベントおよび7つの変更イベントが行なわれ、17のカーソルの動きが生じる。クッキーは、ステップ434の間にそこに位置付けられたサブミット時間およびロード時間に対して無効な値(0,0)を含み、カーソル計数に対しては値17を含む。怠惰な報告を用いる実施例では、ステップ434は省かれ、クッキーは、サブミット時間、ロード時間、カーソル計数に対して、それぞれ、t3、t7および17の値を含む。
時間t10では、ユーザは、第1のフレームセットS1の第1のフレーム内のページF1上の図3に示される「次へ」ボタン366aをクリックする。ウェブブラウザは、そのリンクに対するクリックイベントを発行し、図4Aに示されるリンククリックイベントに対するインスツルメンテーションハンドラ400を起動する。図4Aに示されるように、このインスツルメンテーションイベントハンドラ400は、ステップ404で現在の時間t10を判定し、ステップ406でその時間をサブミット時間としてクッキーに記憶する。それぞれ、ゼロおよび17の値を有するロード時間およびカーソルの動きの値も、表1に示されるようにクッキーに記憶される。ステップ408では、補助的なデータがあればクッキーに記憶される。一部の実施例でクッキーに記憶される補助的な情報の例は、ユーザ識別などのログイン情報、および1つのセッションから別のセッションへ持続する暗号化されたパスワードなどがある。実施例によっては、補助的なデータは、注文の変更、払戻、1つの口座から別の口座への返金などの取引の種類を表わす情報を含む。実施例によっては、補助的な情報は、既にクッキーに存在している場合、再び記憶されない。怠惰な報告を用いる実施例では、クッキー内の値は、t3、t7および17であり、これらはサーバにまだ報告されていないため、新しいサブミット時間t10が記憶される前に、古いサブミット時間t3は、別の変数に移動され、クッキーに保存される。
この例では、リンクのクリックイベントに対する元々のイベントハンドラはないため、ステップ410は動作を行なわない。次に、制御はウェブブラウザの方法に戻り、サーバ上のアプリケーションから次のフレームセットを要求する。クッキーは、ウェブブラウザによって、要求とともにサーバに自動的に送られる。このクッキーは新たなサブミット時間および前のページに対するカーソル計数を含む。怠惰な報告を用いる実施例では、要求とともに送られるクッキーは、サブミット時間、ロード時間および前のページに対するカーソル計数、ならびに現在のページに対するサブミット時間のそれぞれ、t3、t7、17およびt10を含む。
要求に応答して、アプリケーションはフレームセットS2に対する項目を生成し、サーバは予め規定されたJava(R)Scriptを挿入することでその項目を再び変更する。変更された項目のロード中に、ウェブブラウザは図5Aに示されるステップを行なうためのコードを実行し始める。ステップ506では、ウェブブラウザはインスツルメントクッキーが存在すると判定するため、制御は510から514に移る。ステップ510および512によって表わされるコードは、ウェブブラウザにウインドウおよびページレベルイベントに対する元々のイベントハンドラを探させ、それらをウインドウおよびページレベルイベントに対するインスツルメンテーションイベントハンドラで置換えさせる。この例では、そのようなイベントに対する元々のイベントハンドラはない。windows.onLoadイベントハンドラは、図4Bに示されるインスツルメンテーションハンドラ420にセットされ、page.onLoadイベントハンドラは、図5Bに示されるインスツルメンテーションハンドラ520にセットされ、page.onUnloadイベントハンドラは、図4Cに示されるインスツルメンテーションハンドラ440にセットされる。ステップ514では、フレームセット内のページ数が保存される。例示的なフレームセットS2の情報によると、フレームセットには1つのページがあるため、値1が変数NPagesに保存される。クッキーを作成および更新するために使用される他のパラメータも無効な値にセットされる。たとえば、ページカウンタ、カーソルの動きのカウンタ、サブミット時間およびロード時間はゼロにセットされるが、クッキーは更新されない。
時間t11では、第2のフレームセットS2の唯一のページがロードされ、表1の「ページ」欄のS2に示される。ウェブブラウザは、ページS2に対するページロードイベントを発行し、図5Bに示されるページロードイベントに対するインスツルメンテーションハンドラ520が実行される。ステップ522では、元々のページイベントハンドラはないと判定されるため、制御はステップ526、528および530に移り、リンクのクリックイベント、サブミットイベント、フォーカスイベントおよび変更イベントに対するイベントハンドラをページ上のさまざまなウェブページ要素に対して登録する。この例では、ウェブブラウザはウインドウレベルロードイベントも発行するため、制御はステップ420に移る。
ステップ424では、フレームセット内のすべてのページがロードされたと判定される。なぜなら、ページカウンタ(現在のページは含まず)に現在のページのための1を加えると、変数NPagsに保存されるフレームセット内のページ数1に等しいためである。ステップ426では、現在の時間がt11であると判定される。ステップ428では、クッキーは、ロード時間としてのt11で更新される。表1は、サブミット時間のt10、ロード時間のt11および時間t11でのカーソル計数の17を含むことを示す。実施例によっては、カーソル計数も更新され、これはクッキー内の値を0にリセットする。また実施例によっては、差t7−t3も応答時間として記憶される。この例では、ステップ430および432は含まれず、制御はステップ434に直接移る。
時間t12では、ステップ434はサーバからDummy gifと呼ばれる画像ファイルを要求する。ウェブブラウザは、自動的に要求にクッキーを含めるため、サブミット時間、ロード時間および時間t12でのカーソル計数の値がサーバに送られ、サーバのクッキーのログに記憶される。Dummy gifファイルはデータを含まないため、表示装置には何の変化も示されない。次に、クッキー内の値はゼロにリセットされる。怠惰な報告を用いる実施例では、ステップ434は省略され、クッキーは、ブラウザがサーバ上のアプリケーションからページを次に要求するときに報告される。
したがって、サーバ上のアプリケーションによって生成されるHTMLフレームセットにサーバによって挿入される例示的なJava(R)Scriptコードは、変更された項目を形成し、これは、クライアント装置上のウェブブラウザによってダウンロードされると、ウェブ
ブラウザに、応答時間およびカーソルの動きを示すクライアント側の性能の測定値を記憶させ、それらの測定値をサーバに報告させる。
クライアント側の性能に対する例示的なサーバ側の応答
実施例によっては、サービスプロバイダのためにネットワークに接続される装置上で実行するプロセスが性能に応答する。たとえば、サーバ装置102上で実行する性能の分析および応答プロセス194は、最低限の許容性能のしきい値を下回る性能を自動的に検出し、しきい値を下回る性能に応答して何らかの動作を行なう。
実施例によっては、自動的な動作は、性能の測定値に基づいて通知を送ることを含む。通知を送ることは、サービスプロバイダのシステム管理者に、特定のユーザまたはユーザ組織に対する性能が低下しているというページを送るかまたは電話をかけることを含む。実施例によっては、通知を送ることは、サーバ装置上などのネットワーク上で実行する別のプロセスにメッセージを送り、何らかの動作を行なうことを含む。
実施例によっては、自動的な動作は、要求を受取ってから応答して項目を送る間にユーザによって知覚される応答時間とサーバ側で費やされる時間との差を判定することを含む。差が小さければ、性能の問題は、サーバ側に特定される。差が大きければ、問題はクライアントおよびネットワーク側に特定される。
実施例によっては、自動的な動作は、アプリケーションによって生成された項目をより小さくまたはより単純になるように改訂して、その項目がより容易に通信およびレンダリングされ得るようにすることを含む。生成された項目の改訂は、特に問題がサーバ側に特定されているときに有用である。
実施例によっては、応答時間はウェブブラウザの種類およびバージョンまたはオペレーティングシステムの種類およびバージョンまたはその両者に相互に関連付けられ、ブラウザのバージョンの中に他よりもひどく性能が低下しているものがあることを示す傾向を検出できるかを判定する。ウェブサーバは、ウェブのサービスの要求とともに提供されるユーザエージェントフィールドからのブラウザおよびオペレーティングシステムの種類ならびにバージョンを記録する。実施例によっては、クライアント装置の構成要素の傾向を検出するために相互の関連付けが行われる。応答時間とブラウザまたはクライアント装置の構成要素もしくは両者とを相互に関連付けることは、問題がクライアント側に特定されている場合に特に有用である。
図6は、一実施例による、サーバに報告されたクライアント側の性能の測定値で動作させるための例示的な性能分析および応答の方法600を示すフローチャートである。実施例によっては、方法600はサーバ上で実行される。また、実施例によっては、方法600はネットワークを通じてサーバに接続される別の装置で実行される。
ステップ602では、サーバ上で自動的に形成されたクッキーのログがオペランド解析されて分析のための性能の測定値および補助的なデータが得られる。ステップ604では、性能の情報は測定値および補助的なデータに基づいて導出され、リレーショナルデータベースに記憶される。たとえば、応答時間は、サブミット時間およびロード時間から導出され、フレームセット、測定の時間および日付、ブラウザの種類およびバージョン、ならびにフレームセットに対するカーソルの動きの計数への参照とともにデータベーステーブルに記憶される。リレーショナルデータベースにともに位置付けられる情報は、ログファイル全体に分散されていてもよい。たとえば、ステップ434によって提供される即時の報告を用いると、第1のフレームセットに対するカーソル計数は、第2のフレームセットに対するサブミット時間とともにクッキーのログに現われる。
ステップ606では、性能が何らかの最低限の性能のしきい値を下回るかが判定される。性能が最低限の性能のしきい値を下回る場合、制御はステップ608に移り、低下した性能に応答する。たとえば、最低限の性能のしきい値が最大限の許容応答時間に関連付けられる場合、最大限の応答時間を上回る応答時間は、最低限の性能のしきい値を下回る性能に対応する。たとえば、最低限の性能のしきい値が、ユーザの90%が10秒未満の応答時間を感じるというものであれば、ユーザの85%が10秒未満の応答時間を感じると検出することは、最低限の性能のしきい値を下回る性能に対応する。
ステップ608では、しきい値を下回る性能への応答が生成される。たとえば、ステップ608は通知を送る。通知を送ることは、サービスプロバイダのシステム管理者に、ある特定のユーザまたはユーザ組織に対する性能が低下しているというページを送るか、または電話をかけることを含む。実施例によっては、通知を送ることは、サーバ上などのネットワーク上で実行する別のプロセスにメッセージを送り、自動的に何らかの動作を行なうことを含む。
応答の中には、アプリケーションによって生成された項目を改訂して容易に通信およびレンダリングされるより小さいかまたはより単純な項目にすることを含むものがある。また、要求を受取ってから応答して項目を送る間に、ユーザによって知覚される応答時間とサーバ側で費やされる時間との差を判定することを含む応答もある。差が小さい場合、性能の問題はサーバ側に特定される。差が大きい場合、問題はクライアントおよびネットワーク側に特定される。
ステップ610では、リレーショナルデータベース内のデータが分析され、報告が作成される。たとえば、応答時間はブラウザの種類およびバージョンに相互に関連付けられて、他よりもひどく性能が低いブラウザのバージョンがあることを示す傾向を検出できるかが判定される。別の例では、クライアント装置の構成要素の傾向を検出するために相互の関連付けが行われる。
これらの技術によってサービスプロバイダは本物のユーザが感じる実際の性能の測定値を得ることができ、性能の問題をクライアントプロセスまたはクライアント装置の特定の構成要素に相互に関連付けることによって、好ましくない性能の原因を自動的に診断するなど、分析を行なうことができる。
ハードウェアの概要
図7は、この発明の一実施例を実施できるコンピュータシステム700を示すブロック図である。コンピュータシステム700は、情報を通信するためのバス702または他の通信機構、および情報を処理するためのバス702に結合されたプロセッサ704を含む。コンピュータシステム700は、バス702に結合された、ランダムアクセスメモリ(RAM)または他の動的な記憶装置などのメインメモリ706も含み、プロセッサ704によって実行されるべき情報および命令を記憶する。メインメモリ706は、プロセッサ704によって実行されるべき命令の実行中に一時的な変数またはその他の中間情報を記憶するために使用してもよい。コンピュータシステム700は、プロセッサ704のための静的な情報および命令を記憶するため、バス702に結合されたリードオンリメモリ(ROM)708またはその他の静的な記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置710は、情報および命令を記憶するために設けられ、バス702に結合される。
コンピュータシステム700は、バス702を介して、ブラウン管(CRT)などの表示装置712に接続して、コンピュータのユーザに情報を表示してもよい。英数字キーお
よび他のキーを含む入力装置714はバス702に結合されて、情報およびコマンドの選択をプロセッサ704に通信する。別の種類のユーザ入力装置は、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御716であり、方向情報およびコマンド選択をプロセッサ704に通信し、表示装置712上のカーソルの動きを制御する。この入力装置は、通常、第1の軸(たとえば、x)および第2の軸(たとえば、y)の2つの軸で2つの次数の自由を有し、このことによって装置は平面での位置を特定することができる。
この発明は、ここに説明される技術を実行するためにコンピュータシステム700を使用することに関する。この発明の一実施例によると、それらの技術は、プロセッサ704がメインメモリ706に含まれる1つまたは複数の命令の1つまたは複数のシーケンスを実行することに応答して、コンピュータシステムによって実行される。そのような命令は、記憶装置710などの別のコンピュータ読取可能な媒体からメインメモリ706に読込まれてもよい。メインメモリ706に含まれる命令のシーケンスを実行することは、ここに説明されるプロセスのステップをプロセッサ704に行なわせる。代替の実施例では、配線で接続された(hard-wired)回路を、ソフトウェアの命令の代わりに、またはソフトウェアの命令と組合せて使用して、この発明を実現してもよい。したがって、この発明の実施例は、ハードウェア回路およびソフトウェアの特定の組合せに限定されない。
ここで使用される「コンピュータ読取可能な媒体」という言葉は、命令をプロセッサ704に与えて実行させることに参加する媒体を指す。そのような媒体は、不揮発性媒体、揮発性媒体および伝送媒体を含むさまざまな形をとり得るが、これらに限らない。不揮発性媒体は、たとえば、記憶装置710などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、メインメモリ706などの動的メモリを含む。伝送媒体は、バス702を含むワイヤを含む、同軸ケーブル、銅線および光ファイバを含む。伝送媒体は、電波通信および赤外線データ通信中に生成されるものなどの、音波または光波の形をとってもよい。
コンピュータ読取可能な媒体の一般的な形は、たとえば、フロッピー(R)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、またはその他の磁気媒体、CD−ROM、他の光媒体、パンチカード、紙テープ、パターンを備えた他の物理的な媒体、RAM、PROM、EPROM、FLASH−EPROM、他のメモリチップまたはカートリッジ、後述する搬送波、またはコンピュータがそこから読取ることのできる他の媒体を含む。
さまざまな形のコンピュータ読取可能な媒体が、1つまたは複数の情報の1つまたは複数のシーケンスをプロセッサ704に運んで実行させることに関与する。たとえば、命令は遠隔コンピュータの磁気ディスク上で運ばれてもよい。遠隔コンピュータは命令を動的メモリにロードし、モデムを使用して電話回線上で命令を送ることができる。コンピュータシステム700のローカルモデムは、電話線上でデータを受取り、赤外線トランスミッタを使用してデータを赤外線信号に変換する。赤外線検出器は赤外線信号で運ばれるデータを受信することができ、適切な回路はデータをバス702上に位置付けることができる。バス702はデータをメインメモリ706に運び、そこからプロセッサ704が命令を検索して実行する。メインメモリ706によって受取られる命令は、プロセッサ704による実行の前または後に任意で記憶装置710に記憶してもよい。
コンピュータシステム700は、バス702に結合される通信インターフェイス718も含む。通信インターフェイス718は、ローカルネットワーク722に接続されるネットワークリンク720に結合する2方向のデータ通信を提供する。たとえば、通信インターフェイス718を総合デジタル通信網(ISDN)カードまたはモデムに統合して、対応する種類の電話線にデータ通信接続を提供してもよい。別の例では、通信インターフェ
イス718は、互換性LANへのデータ通信接続を提供するローカルエリアネットワーク(LAN)カードであってもよい。無線リンクも実現可能である。そのような実現例では、通信インターフェイス718はさまざまな種類の情報を表わすデジタルデータストリームを運ぶ電気信号、電磁気信号または光信号を授受する。
ネットワークリンク720は、通常1つまたは複数のネットワークを通じて他のデータ装置にデータ通信を提供する。たとえば、ネットワークリンク720は、ローカルネットワーク722を通じてホストコンピュータ724またはインターネットサービスプロバイダ(ISP)726によって管理されるデータ装置への接続を提供してもよい。ISP726は、現在では一般に「インターネット」728と呼ばれているワールドワイドパケットデータ通信ネットワークを通じてデータ通信サービスを提供する。ローカルネットワーク722およびインターネット728はともに、デジタルデータストリームを運ぶ電気信号、電磁気信号または光信号を使用する。さまざまなネットワークを通る信号およびネットワークリンク702上ならびに通信インターフェイス718を通る信号は、コンピュータシステム700にデジタルデータを授受するが、これらは情報を伝送する搬送波の例示的な形である。
コンピュータシステム700は、ネットワーク、ネットワークリンク720および通信インターフェイス718を通じて、プログラムコードを含むメッセージを送り、データを受取ることができる。インターネットの例では、サーバ730は、アプリケーションプログラムに対して要求されたコードをインターネット728、ISP726、ローカルネットワーク722および通信インターフェイス718を通じて伝送することができる。
受取られたコードは、受け取られるときにプロセッサ704によって実行してもよいし、および/または記憶装置710もしくは他の不揮発性記憶装置に記憶して後に実行してもよい。このような態様で、コンピュータシステム700は搬送波の形でアプリケーションコードを入手することができる。
上述の明細書では、この発明を特定の実施例に関して説明した。しかしながら、この発明の広い精神および範囲を離れることなく、さまざまな変形および変更を行ない得ることは明白である。したがって、明細書および図面は、限定的な意味ではなく、例示的なものと見なされるべきである。
一実施例によるネットワーク上のサーバおよびクライアントを示すブロック図である。 一実施例によるクライアント側の性能に対する応答を制御するための方法を示すフローチャートである。 サーバ装置上で作動する仮定のアプリケーションによって作成される例示的なコンテンツを示すブロック図である。 一実施例による、クライアントに送られる変更されたコンテンツに含まれる第1のイベントハンドラを示すフローチャートである。 一実施例による、クライアントに送られる変更されたコンテンツに含まれる第2のイベントハンドラを示すフローチャートである。 一実施例による、クライアントに送られる変更されたコンテンツに含まれる第3のイベントハンドラを示すフローチャートである。 一実施例による、クライアントに送られる変更されたコンテンツに含まれる第4のイベントハンドラを示すフローチャートである。 一実施例による、クライアントに送られる変更されたコンテンツに含まれる性能測定コードを示すフローチャートの第1の部分の図である。 一実施例による、クライアントに送られる変更されたコンテンツに含まれる性能測定コードを表わすフローチャートの第2の部分の図である。 一実施例による、クライアント側の性能の測定値の分析を行なうための方法を示すフローチャートである。 この発明の実施例を実現できるコンピュータシステムを示すブロック図である。

Claims (80)

  1. クライアント側の性能を測定するための方法であって、
    サーバ装置からクライアント装置に送られるべきコンテンツに含まれる項目を、前記コンテンツがクライアントプロセスに到着する前に途中で捉えるステップと、
    前記項目を変更して、変更された項目を作成するステップと、
    前記変更された項目を前記クライアントプロセスに送るステップとを備え、
    前記変更された項目は、
    前記項目に関連付けられるサービスに関連する性能を測定するステップと、
    性能を測定する前記ステップの結果の測定値に基づいて、1つまたは複数の動作を行なうステップとを、
    前記クライアント装置上の1つまたは複数のプロセッサに実行させるコードを含み、
    前記測定値に基づいて、1つまたは複数の動作を行なう前記ステップは、先に受信されている前記コンテンツとは異なる画像ファイルを受取るための要求をサーバ装置に送るステップを含み、前記画像ファイルを受取るための要求を送ることで、前記クライエントプロセスは前記測定値を示すデータについても前記サーバ装置送る、方法。
  2. 前記コンテンツは、アプリケーションによって生成され、前記項目を変更する前記ステップは、前記アプリケーションとは異なるプロセスによって実行され、
    前記コンテンツは、フレームページと、第1のページと、第2のページとを含み、
    前記フレームページは、その中に第1のページが表示されるフレームを含み、
    前記コードは、前記第1のページに挿入される第1のコードと、前記第2のページに挿入される第2のコードとを含み、
    前記フレームページは、前記第1のページ前記フレーム内にロードされる前に、前記第2のページが前記フレーム内にロードされるように構成されており
    前記第2のコードは、前記クライエント装置に、
    (1)前記サーバ装置からの前記第1のページの要求、および
    (2)前記第1のページ要求た時間を示すデータの記憶、を実行させ、
    前記第1のコードは、前記クライエント装置に、
    前記第1のページのレンダリングが完了した時間を示すのデータの記憶を実行させ、
    前記項目に関連付けられるサービスに関連する性能を測定するステップは、前記第1のページを要求した時間と前記第1のページのレンダリングが完了した時間との差を前記測定値として算出するステップを含む、請求項1に記載の方法。
  3. 性能を測定する前記ステップおよび前記測定値に基づいて1つまたは複数の動作を行なう前記ステップは、前記クライアントプロセスによって、前記クライエント装置のユーザによって気付くことができない態様で実行され、前記測定値は、カーソルの動きの数を示す、請求項1に記載の方法。
  4. 前記測定値を示すデータは、データ構造に記憶され、前記データ構造は、前記クライアントプロセスからの前記画像ファイルに対する前記要求に応答して前記サーバ装置に自動的に送られる請求項に記載の方法。
  5. 前記クライアントプロセスはウェブブラウザであり、
    前記データ構造は、前記ウェブブラウザによって前記クライアント装置上に記憶されるクッキーである、請求項に記載の方法。
  6. 前記項目を変更する前記ステップは、前記クライアントプロセスに前記画像ファイルに対する前記要求を発行させるコードを前記項目に付加するステップを含み、
    データを前記サーバ装置に送る前記ステップは、前記データを含む前記要求を前記サーバ装置に送るステップをさらに含み、前記方法はさらに、
    前記測定値を前記サーバ装置における性能の測定値に関連付けるステップを備える、請求項1に記載の方法。
  7. 前記画像ファイルに対する前記要求は、データを含まない画像ファイルに対する要求である、請求項1に記載の方法。
  8. 前記測定値を示す前記データをサーバ装置上のログファイルに記憶するステップをさらに含む、請求項1に記載の方法。
  9. 前記測定値を示す前記データを前記ネットワーク上で前記実体のデータベースに記憶するステップをさらに含む、請求項1に記載の方法。
  10. 前記サーバ装置が前記測定値を示すデータを前記クライアントプロセスからネットワーク上で受取るステップと、
    前記サーバ装置が前記測定値を示す前記データに基づいて、1つまたは複数の動作を行なうステップとをさらに含む、請求項1に記載の方法。
  11. 前記サーバ装置が前記測定値を示す前記データに基づいて、1つまたは複数の動作を行なう前記ステップは、
    前記データが、性能があるしきい値を下回ったことを示すかを判定するステップと、
    前記データが、性能が前記しきい値を下回ったことを示す場合、通知メッセージを送るステップとをさらに含む、請求項10に記載の方法。
  12. 前記クライエントプロセスが前記測定値に基づいて、1つまたは複数の動作を行なう前記ステップは、
    前記測定値が、性能があるしきい値を下回ったことを示すかを判定するステップと、
    前記測定値が、性能が前記しきい値を下回ったことを示す場合、通知メッセージを送るステップとをさらに含む、請求項1に記載の方法。
  13. 通知メッセージを送る前記ステップは、前記通知メッセージを前記サービスに関連付けられるサーバ装置の管理者に送るステップを含む、請求項12に記載の方法。
  14. 通知メッセージを送る前記ステップは、前記通知メッセージを前記クライアントプロセスのユーザに送るステップを含む、請求項12に記載の方法。
  15. 前記測定値は、前記クライアントプロセスのユーザが前記クライアント装置の表示装置上にレンダリングされた第1のウェブページ上に表示されている項目を選択する第1の時間と、第2のウェブページが前記クライアント装置の前記表示装置上に完全にレンダリングされる第2の時間との間のクライアント応答時間である、請求項1に記載の方法。
  16. 前記コードは、前記クライアント装置上の1つまたは複数のプロセッサに、前記アプリケーションからの前記サービスの入手に関与している前記クライアントプロセスの1つまたは複数の構成要素に関連する補助的な情報を収集するステップをさらに行なわせ、
    前記測定値に基づいて1つまたは複数の動作を行なう前記ステップは、前記測定値を前記補助的な情報に相互に関連付けるステップを含む、請求項1に記載の方法。
  17. 前記項目を途中で捉える前記ステップの後であって、かつ前記項目を変更する前記ステップの前に、
    前記項目に関連付けられる種類を判定するステップと、
    前記項目の前記種類に基づいて前記項目を変更する前記ステップを行なうべきかを判定するステップとを含む、請求項1に記載の方法。
  18. 前記項目を途中で捉える前記ステップの後であって、かつ前記項目を変更する前記ステップの前に、
    前記項目に関連付けられる一意の参照を判定するステップと、
    前記一意の参照がある特定の参照に合致するかに基づいて、前記項目を変更する前記ステップを行なうべきかを判定するステップとをさらに含む、請求項1に記載の方法。
  19. 前記項目を途中で捉える前記ステップの後であって、かつ前記項目を変更する前記ステップの前に、
    前記クライアントプロセスに送られる変更されるべき全項目の割合を判定するステップと、
    前記割合に基づいて、前記項目を変更する前記ステップを行なうべきかを判定するステップとをさらに含む、請求項1に記載の方法。
  20. 前記クライアントプロセスに送られるべき前記項目は、前記クライアントプロセスに送られる前にキャッシュに記憶され、
    前記項目を途中で捉える前記ステップは、前記キャッシュ内の前記項目にアクセスするステップを含み、
    前記変更された項目を前記クライアントプロセスに送る前記ステップは、前記キャッシュ内の前記項目を前記変更された項目で置換えるステップを含む、請求項1に記載の方法。
  21. 前記キャッシュは、前記サービスに関連付けられるサーバ装置上にある、請求項20に記載の方法。
  22. 前記キャッシュは、前記クライアントプロセスのプロキシサーバ上にある、請求項20に記載の方法。
  23. 前記項目はハイパーテキストマークアップ言語(HTML)ステートメントを含み、
    前記クライアントプロセスはウェブブラウザである、請求項1に記載の方法。
  24. 前記ウェブブラウザはJava(登録商標)Scriptを作動させるように構成され、
    前記コードはJava(登録商標)Scriptステートメントを含む、請求項23に記載の方法。
  25. 前記コードは、ウェブブラウザによって解釈可能なスクリプト言語に準拠する、請求項1に記載の方法。
  26. 前記コードはJava(登録商標)アプレットを含む、請求項1に記載の方法。
  27. 前記コードは、ActiveXモジュールを含む、請求項1に記載の方法。
  28. 前記項目を変更する前記ステップは、前記項目の端部に前記コードを追加するステップをさらに含む、請求項1に記載の方法。
  29. 前記項目はマークアップ言語ステートメントを含み、
    前記項目を変更する前記ステップは、前記マークアップ言語ステートメントのある特定のステートメントに前記コードを挿入するステップをさらに含む、請求項1に記載の方法。
  30. 前記コードは、第1の項目に付加される第1のコードおよび第2の項目に付加される第2のコードのうちの少なくとも1つを含み、
    前記性能を測定するステップは、前記第1のコードに基づいて時間の測定を開始するステップおよび前記第2のコードに基づいて時間の測定を終了するステップを含む、請求項1に記載の方法。
  31. 前記第1のコードは、前記クライアントプロセスのユーザが前記第1の項目に含まれる制御をクリックすることに応答して実行され、
    前記第2のコードは、前記第2の項目が完全にロードされることに応答して実行される、請求項30に記載の方法。
  32. 前記コードは、前記第1のコードの前記クライアントプロセスへの到着時に実行される第1のコード、および前記第1のコードの到着後に前記クライアントプロセスによって生成されるデータ構造に応答して実行される第2のコードを含む、請求項1に記載の方法。
  33. 前記データ構造は、前記クライアント装置でのイベントを記述する、請求項32に記載の方法。
  34. 前記イベントは、前記クライアント装置上で実行するオペレーティングシステムから受取られるメッセージである、請求項33に記載の方法。
  35. 前記イベントは、ユーザによる前記クライアント装置の制御の操作である、請求項33に記載の方法。
  36. 前記第2のコードは、前記1つまたは複数のプロセッサに性能を測定する前記ステップを行なわせる、請求項32に記載の方法。
  37. 前記第2のコードは、前記1つまたは複数のプロセッサに現在の時間を記録させる、請求項32に記載の方法。
  38. 前記クライアントプロセスに送られるべき前記項目は、前記クライアントプロセスによって生成される前記データ構造に応答して実行されるべき第3のコードを含み、
    前記第1のコードは、前記1つまたは複数のプロセッサに第3のコードを前記第2のコードで置換えるステップを行なわせる、請求項32に記載の方法。
  39. 前記コードは、前記クライアントプロセスによって生成される第1のイベントを記述するデータ構造に応答して実行される第1のコード、および前記クライアントプロセスによって生成される第2のイベントを記述するデータ構造に応答して実行される第2のコードを含む、請求項1に記載の方法。
  40. 前記クライアントプロセスに送られるべき前記項目は、前記クライアントプロセスによる前記第2のイベントを記述する前記データ構造に応答して実行されるべき第3のコードを含み、
    前記第1のコードは前記1つまたは複数のプロセッサに、前記第3のコードを前記第2のコードで置換えるステップを行なわせる、請求項39に記載の方法。
  41. クライアント側の性能を測定するための命令を保持するコンピュータ読取可能な媒体であって、1つまたは複数のプロセッサによる前記命令の実行は、
    サーバ装置からクライアント装置に送られるべきコンテンツに含まれる項目を、前記コンテンツがクライアントプロセスに到着する前に途中で捉えるステップと、
    前記項目を変更して、変更された項目を作成するステップと、
    前記変更された項目を前記クライアントプロセスに送るステップとを行なわせ、
    前記変更された項目は、
    前記項目に関連付けられるサービスに関連する性能を測定するステップと、
    性能を測定する前記ステップの結果の測定値に基づいて、1つまたは複数の動作を行なうステップとを、
    前記クライアント装置上の1つまたは複数のプロセッサに実行させるコードを含み、
    前記測定値に基づいて、1つまたは複数の動作を行なう前記ステップは、先に受信されている前記コンテンツとは異なる画像ファイルを受取るための要求をサーバ装置に送るステップを含み、前記画像ファイルを受取るための要求を送ることで、前記クライエントプロセスは前記測定値を示すデータについても前記サーバ装置送る、コンピュータ読取可能な媒体。
  42. 前記コンテンツは、アプリケーションによって生成され、前記項目を変更する前記ステップは、前記アプリケーションとは異なるプロセスによって実行され、
    前記コンテンツは、フレームページと、第1のページと、第2のページとを含み、
    前記フレームページは、その中に第1のページが表示されるフレームを含み、
    前記コードは、前記第1のページに挿入される第1のコードと、前記第2のページに挿入される第2のコードとを含み、
    前記フレームページは、前記第1のページ前記フレーム内にロードされる前に、前記第2のページが前記フレーム内にロードされるように構成されており
    前記第2のコードは、前記クライエント装置に、
    (1)前記サーバ装置からの前記第1のページの要求、および
    (2)前記第1のページ要求た時間を示すデータの記憶、を実行させ、
    前記第1のコードは、前記クライエント装置に、
    前記第1のページのレンダリングが完了した時間を示すのデータの記憶を実行させ、
    前記項目に関連付けられるサービスに関連する性能を測定するステップは、前記第1のページを要求した時間と前記第1のページのレンダリングが完了した時間との差を前記測定値として算出するステップを含む、請求項41に記載のコンピュータ読取可能な媒体。
  43. 性能を測定する前記ステップおよび前記測定値に基づいて1つまたは複数の動作を行なう前記ステップは、前記クライアントプロセスによって、前記クライエント装置のユーザによって気付くことができない態様で実行され、前記測定値は、カーソルの動きの数を示す、請求項41に記載のコンピュータ読取可能な媒体。
  44. 前記測定値を示すデータは、データ構造に記憶され、前記データ構造は、前記クライアントプロセスからの前記画像ファイルに対する前記要求に応答して前記サーバ装置に自動的に送られる、請求項41に記載のコンピュータ読取可能な媒体。
  45. 前記クライアントプロセスはウェブブラウザであり、
    前記データ構造は、前記ウェブブラウザによって前記クライアント装置上に記憶されるクッキーである、請求項44に記載のコンピュータ読取可能な媒体。
  46. 前記項目を変更する前記ステップは、前記クライアントプロセスに前記画像ファイルに対する前記要求を発行させるコードを前記項目に付加するステップを含み、
    データを前記サーバ装置に送る前記ステップは、前記データを含む前記要求を前記サーバ装置に送るステップをさらに含み、前記1つまたは複数のプロセッサによる前記命令の1つまたは複数のシーケンスの実行はさらに、
    前記測定値を前記サーバ装置における性能の測定値に関連付けるステップを行なわせる、請求項41に記載のコンピュータ読取可能な媒体。
  47. 前記画像ファイルに対する前記要求は、データを含まない画像ファイルに対する要求である、請求項41に記載のコンピュータ読取可能な媒体。
  48. 前記1つまたは複数のプロセッサによる前記命令の1つまたは複数のシーケンスの実行は、前記測定値を示す前記データをサーバ装置上のログファイルに記憶するステップをさらに行なわせる、請求項41に記載のコンピュータ読取可能な媒体。
  49. 前記1つまたは複数のプロセッサによる前記命令の1つまたは複数のシーケンスの実行は、前記1つまたは複数のプロセッサに、前記測定値を示す前記データを前記ネットワーク上の前記実体のデータベースに記憶するステップをさらに行なわせる、請求項41に記載のコンピュータ読取可能な媒体。
  50. 前記1つまたは複数のプロセッサによる前記命令の1つまたは複数のシーケンスの実行は、前記1つまたは複数のプロセッサに、
    前記測定値を示すデータを前記クライアントプロセスからネットワーク上で受取るステップと、
    前記測定値を示す前記データに基づいて1つまたは複数の動作を行なうステップとをさらに行なわせる、請求項41に記載のコンピュータ読取可能な媒体。
  51. 前記サーバ装置が前記測定値を示す前記データに基づいて1つまたは複数の動作を行なう前記ステップは、
    前記データが、性能があるしきい値を下回ったことを示すかを判定するステップと、
    前記データが、性能が前記しきい値を下回ったことを示す場合、通知メッセージを送るステップをさらに含む、請求項50に記載のコンピュータ読取可能な媒体。
  52. 前記クライエントプロセスが前記測定値に基づいて1つまたは複数の動作を行なう前記ステップは、
    前記測定値が、性能があるしきい値を下回ったことを示すかを判定するステップと、
    前記測定値が、性能が前記しきい値を下回ったことを示す場合、通知メッセージを送るステップをさらに含む、請求項41に記載のコンピュータ読取可能な媒体。
  53. 通知メッセージを送る前記ステップは、前記サービスに関連付けられるサーバ装置の管理者に前記通知メッセージを送るステップを含む、請求項52に記載のコンピュータ読取可能な媒体。
  54. 通知メッセージを送る前記ステップは、前記クライアント装置のユーザに前記通知メッセージを送るステップを含む、請求項52に記載のコンピュータ読取可能な媒体。
  55. 前記測定値は、前記クライアントプロセスのユーザが前記クライアント装置の表示装置にレンダリングされた第1のウェブページ上に表示されている項目を選択する第1の時間と、第2のウェブページが前記クライアント装置の前記表示装置に完全にレンダリングされる第2の時間との間のクライアント応答時間である、請求項41に記載のコンピュータ読取可能な媒体。
  56. 前記コードは、前記クライアント装置上の1つまたは複数のプロセッサに、前記アプリケーションからの前記サービスの入手に関与している前記クライアントプロセスの1つまたは複数の構成要素に関連する補助的な情報を収集するステップをさらに行なわせ、
    前記測定値に基づいて1つまたは複数の動作を行なう前記ステップは、前記測定値を前記補助的な情報に相互に関連付けるステップを含む、請求項41に記載のコンピュータ読取可能な媒体。
  57. 前記1つまたは複数のプロセッサによる前記命令の1つまたは複数のシーケンスの実行は、前記1つまたは複数のプロセッサに、前記項目を途中で捉える前記ステップの後であって、かつ前記項目を変更する前記ステップの前に、
    前記項目に関連付けられる種類を判定するステップと、
    前記項目の前記種類に基づいて前記項目を変更する前記ステップを行なうべきかを判定するステップとをさらに行なわせる、請求項41に記載のコンピュータ読取可能な媒体。
  58. 前記1つまたは複数のプロセッサによる前記命令の1つまたは複数のシーケンスの実行は、前記1つまたは複数のプロセッサに、前記項目を途中で捉える前記ステップの後であって、かつ前記項目を変更する前記ステップの前に、
    前記項目に関連付けられる一意の参照を判定するステップと、
    前記一意の参照がある特定の参照に合致するかに基づいて前記項目を変更する前記ステップを行なうべきかを判定するステップとをさらに行なわせる、請求項41に記載のコンピュータ読取可能な媒体。
  59. 前記1つまたは複数のプロセッサによる前記命令の1つまたは複数のシーケンスの実行は、前記1つまたは複数のプロセッサに、前記項目を途中で捉える前記ステップの後であって、かつ前記項目を変更する前記ステップの前に、
    前記クライアントプロセスに送られる変更されるべき全項目の割合を判定するステップと、
    前記割合に基づいて前記項目を変更する前記ステップを行なうかを判定するステップとをさらに行なわせる、請求項41に記載のコンピュータ読取可能な媒体。
  60. 前記クライアントプロセスに送られるべき前記項目は、前記クライアントプロセスに送られる前にキャッシュに記憶され、
    前記項目を途中で捉える前記ステップは、前記キャッシュ内の前記項目にアクセスするステップを含み、
    前記変更された項目を前記クライアントプロセスに送る前記ステップは、前記キャッシュ内の前記項目を前記変更された項目で置換えるステップを含む、請求項41に記載のコンピュータ読取可能な媒体。
  61. 前記キャッシュは、前記サービスに関連付けられるサーバ装置上にある、請求項60に記載のコンピュータ読取可能な媒体。
  62. 前記キャッシュは、前記クライアントプロセスのプロキシサーバ上にある、請求項60に記載のコンピュータ読取可能な媒体。
  63. 前記項目はハイパーテキストマークアップ言語(HTML)ステートメントを含み、
    前記クライアントプロセスはウェブブラウザである、請求項41に記載のコンピュータ読取可能な媒体。
  64. 前記ウェブブラウザはJava(登録商標)Scriptを作動させるように構成され、
    前記コードはJava(登録商標)Scriptステートメントを含む、請求項63に記載のコンピュータ読取可能な媒体。
  65. 前記コードは、ウェブブラウザによって解釈可能なスクリプト言語に準拠する、請求項41に記載のコンピュータ読取可能な媒体。
  66. 前記コードはJava(登録商標)アプレットを含む、請求項41に記載のコンピュータ読取可能な媒体。
  67. 前記コードはActiveXモジュールを含む、請求項41に記載のコンピュータ読取可能な媒体。
  68. 前記項目を変更する前記ステップは、前記項目の端部に前記コードを追加するステップをさらに含む、請求項41に記載のコンピュータ読取可能な媒体。
  69. 前記項目はマークアップ言語ステートメントを含み、
    前記項目を変更する前記ステップは、前記マークアップ言語ステートメントのある特定のステートメントに前記コードを挿入するステップをさらに含む、請求項41に記載のコンピュータ読取可能な媒体。
  70. 前記コードは、第1の項目に付加される第1のコードおよび第2の項目に付加される第2のコードのうちの少なくとも1つを含み、
    性能を測定する前記ステップは、前記第1のコードに基づいて時間の測定を開始するステップおよび前記第2のコードに基づいて時間の測定を終了するステップを含む、請求項41に記載のコンピュータ読取可能な媒体。
  71. 前記第1のコードは、前記クライアントプロセスのユーザが前記第1の項目に含まれる制御をクリックすることに応答して実行され、
    前記第2のコードは、前記第2の項目が完全にロードされることに応答して実行される、請求項70に記載のコンピュータ読取可能な媒体。
  72. 前記コードは、前記第1のコードの前記クライアントプロセスへの到着時に実行される第1のコード、および前記第1のコードの到着後に前記クライアントプロセスによって生成されるデータ構造に応答して実行される第2のコードを含む、請求項41に記載のコンピュータ読取可能な媒体。
  73. 前記データ構造は、前記クライアント装置でのイベントを記述する、請求項72に記載のコンピュータ読取可能な媒体。
  74. 前記イベントは、前記クライアント装置上で実行するオペレーティングシステムから受取られるメッセージである、請求項73に記載のコンピュータ読取可能な媒体。
  75. 前記イベントは、ユーザによる前記クライアント装置の制御の操作である、請求項73に記載のコンピュータ読取可能な媒体。
  76. 前記第2のコードは、前記1つまたは複数のプロセッサに性能を測定する前記ステップを行なわせる、請求項72に記載のコンピュータ読取可能な媒体。
  77. 前記第2のコードは、前記1つまたは複数のプロセッサに現在の時間を記録させる、請求項72に記載のコンピュータ読取可能な媒体。
  78. 前記クライアントプロセスに送られるべき前記項目は、前記クライアントプロセスによって生成される前記データ構造に応答して実行されるべき第3のコードを含み、
    前記第1のコードは、前記1つまたは複数のプロセッサに前記第3のコードを前記第2のコードで置換えるステップを行なわせる、請求項72に記載のコンピュータ読取可能な媒体。
  79. 前記コードは、前記クライアント装置によって生成される第1のイベントを記述するデータ構造に応答して実行される第1のコード、および前記クライアントプロセスによって生成される第2のイベントを記述するデータ構造に応答して実行される第2のコードを含む、請求項41に記載のコンピュータ読取可能な媒体。
  80. 前記クライアントプロセスに送られるべき前記項目は、前記クライアントプロセスによる前記第2のイベントを記述する前記データ構造に応答して実行されるべき第3のコードを含み、
    前記第1のコードは、前記1つまたは複数のプロセッサに前記第3のコードを前記第2のコードで置換えるステップを行なわせる、請求項79に記載のコンピュータ読取可能な媒体。
JP2002584193A 2001-04-20 2002-04-19 クライアント側の性能を測定するための方法、およびそのための命令を保持するコンピュータ読取可能な媒体、ならびにクライアント側の性能に応答する方法 Expired - Lifetime JP4334232B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US28557701P 2001-04-20 2001-04-20
US09/945,160 US20020184363A1 (en) 2001-04-20 2001-08-31 Techniques for server-controlled measurement of client-side performance
PCT/US2002/012695 WO2002086743A1 (en) 2001-04-20 2002-04-19 Techniques for server-controlled measurement of client-side performance

Publications (3)

Publication Number Publication Date
JP2004537097A JP2004537097A (ja) 2004-12-09
JP2004537097A5 JP2004537097A5 (ja) 2005-12-22
JP4334232B2 true JP4334232B2 (ja) 2009-09-30

Family

ID=26963268

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002584193A Expired - Lifetime JP4334232B2 (ja) 2001-04-20 2002-04-19 クライアント側の性能を測定するための方法、およびそのための命令を保持するコンピュータ読取可能な媒体、ならびにクライアント側の性能に応答する方法

Country Status (6)

Country Link
US (1) US20020184363A1 (ja)
EP (1) EP1379965A4 (ja)
JP (1) JP4334232B2 (ja)
CN (1) CN101194247B (ja)
CA (1) CA2443283A1 (ja)
WO (1) WO2002086743A1 (ja)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8156216B1 (en) 2002-01-30 2012-04-10 Adobe Systems Incorporated Distributed data collection and aggregation
US6856943B2 (en) * 2002-03-26 2005-02-15 Sun Microsystems, Inc. User perception tool
US7418702B2 (en) * 2002-08-06 2008-08-26 Sheng (Ted) Tai Tsao Concurrent web based multi-task support for control management system
US8250201B2 (en) * 2002-09-09 2012-08-21 International Business Machines Corporation Servlet monitoring tool
US7124330B2 (en) * 2002-09-27 2006-10-17 Broadcom Corporation Physical layer loop back method and apparatus
US7216164B1 (en) * 2002-10-09 2007-05-08 Cisco Technology, Inc. Methods and apparatus for determining the performance of a server
US7376732B2 (en) * 2002-11-08 2008-05-20 Federal Network Systems, Llc Systems and methods for preventing intrusion at a web host
US7353538B2 (en) * 2002-11-08 2008-04-01 Federal Network Systems Llc Server resource management, analysis, and intrusion negation
US20040221034A1 (en) * 2002-12-18 2004-11-04 Kausik Balas Natarajan Centralized measurement of web performance
US20050216844A1 (en) * 2004-03-03 2005-09-29 Error Brett M Delayed transmission of website usage data
US20040243704A1 (en) * 2003-04-14 2004-12-02 Alfredo Botelho System and method for determining the unique web users and calculating the reach, frequency and effective reach of user web access
US7712083B2 (en) * 2003-08-20 2010-05-04 Igt Method and apparatus for monitoring and updating system software
US7216256B2 (en) 2004-03-30 2007-05-08 Bellsouth Intellectual Property Corporation Methods, systems, and products for verifying integrity of web-server served content
US7363364B2 (en) 2004-03-30 2008-04-22 At&T Delaware Intellectual Property, Inc. Methods, systems, and products for verifying integrity of web-server served content
US7426556B2 (en) 2004-03-30 2008-09-16 At&T Intellectual Property I, L.P. Methods, systems, and products for verifying integrity of web-server served content
JP2006279466A (ja) * 2005-03-29 2006-10-12 Fujitsu Ltd 監視システム、監視プログラム及び監視方法
US8429655B2 (en) * 2005-04-29 2013-04-23 Microsoft Corporation System and method for asynchronous processing in page lifecycle
US7698417B2 (en) * 2005-06-15 2010-04-13 Microsoft Corporation Optimized performance counter monitoring
US7636711B2 (en) 2005-06-28 2009-12-22 Microsoft Corporation Extensible workflows
US8005943B2 (en) * 2005-10-12 2011-08-23 Computer Associates Think, Inc. Performance monitoring of network applications
US20070094380A1 (en) * 2005-10-20 2007-04-26 Samuel Fu Method and apparatus for collocating application monitoring reports with web applications
GB0605578D0 (en) * 2006-03-20 2006-04-26 Speed Trap Com Ltd Content management
US20080010359A1 (en) * 2006-07-10 2008-01-10 Jeffrey Mark Achtermann Computer implemented method and system for managing server-based rendering of messages in a heterogeneous environment
CN101131747B (zh) * 2006-08-22 2012-02-01 国际商业机器公司 捕获和/或分析客户端的Web页面事件的方法、装置及系统
US8849981B2 (en) * 2006-12-01 2014-09-30 Ca, Inc. Response time benchmarking
US9349134B1 (en) * 2007-05-31 2016-05-24 Google Inc. Detecting illegitimate network traffic
JP4906672B2 (ja) * 2007-10-22 2012-03-28 株式会社日立製作所 ウェブアプリケーションの処理記録方法および処理記録装置
US7975214B2 (en) * 2007-10-26 2011-07-05 International Business Machines Corporation System for capturing frames and form data
US8914774B1 (en) 2007-11-15 2014-12-16 Appcelerator, Inc. System and method for tagging code to determine where the code runs
US8954989B1 (en) 2007-11-19 2015-02-10 Appcelerator, Inc. Flexible, event-driven JavaScript server architecture
US8260845B1 (en) 2007-11-21 2012-09-04 Appcelerator, Inc. System and method for auto-generating JavaScript proxies and meta-proxies
US8719451B1 (en) 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
US8566807B1 (en) 2007-11-23 2013-10-22 Appcelerator, Inc. System and method for accessibility of document object model and JavaScript by other platforms
US8806431B1 (en) 2007-12-03 2014-08-12 Appecelerator, Inc. Aspect oriented programming
US8819539B1 (en) 2007-12-03 2014-08-26 Appcelerator, Inc. On-the-fly rewriting of uniform resource locators in a web-page
US8756579B1 (en) 2007-12-03 2014-06-17 Appcelerator, Inc. Client-side and server-side unified validation
US8849985B1 (en) * 2007-12-03 2014-09-30 Appcelerator, Inc. On-the-fly instrumentation of Web applications, Web-pages or Web-sites
US8938491B1 (en) 2007-12-04 2015-01-20 Appcelerator, Inc. System and method for secure binding of client calls and server functions
US8527860B1 (en) 2007-12-04 2013-09-03 Appcelerator, Inc. System and method for exposing the dynamic web server-side
US8285813B1 (en) 2007-12-05 2012-10-09 Appcelerator, Inc. System and method for emulating different user agents on a server
US8335982B1 (en) 2007-12-05 2012-12-18 Appcelerator, Inc. System and method for binding a document object model through JavaScript callbacks
US8639743B1 (en) 2007-12-05 2014-01-28 Appcelerator, Inc. System and method for on-the-fly rewriting of JavaScript
US7953887B2 (en) * 2008-02-14 2011-05-31 International Business Machines Corporation Asynchronous automated routing of user to optimal host
US8291079B1 (en) 2008-06-04 2012-10-16 Appcelerator, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8880678B1 (en) 2008-06-05 2014-11-04 Appcelerator, Inc. System and method for managing and monitoring a web application using multiple cloud providers
US7596620B1 (en) 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8893156B2 (en) * 2009-03-24 2014-11-18 Microsoft Corporation Monitoring of distributed applications
US8510469B2 (en) * 2009-08-31 2013-08-13 Cisco Technology, Inc. Measuring attributes of client-server applications
US9122538B2 (en) * 2010-02-22 2015-09-01 Virtustream, Inc. Methods and apparatus related to management of unit-based virtual resources within a data center environment
US8473959B2 (en) * 2010-02-22 2013-06-25 Virtustream, Inc. Methods and apparatus related to migration of customer resources to virtual resources within a data center environment
US9027017B2 (en) * 2010-02-22 2015-05-05 Virtustream, Inc. Methods and apparatus for movement of virtual resources within a data center environment
US9058210B2 (en) * 2010-03-23 2015-06-16 Ebay Inc. Weighted request rate limiting for resources
US8938721B2 (en) * 2010-07-21 2015-01-20 Microsoft Corporation Measuring actual end user performance and availability of web applications
US9582392B2 (en) 2010-09-14 2017-02-28 Microsoft Technology Licensing, Llc Add-on performance advisor
JP5379911B2 (ja) * 2010-09-28 2013-12-25 株式会社野村総合研究所 動作検証装置、動作検証方法および動作検証プログラム
CN102541885A (zh) * 2010-12-10 2012-07-04 中国移动通信集团浙江有限公司 一种检测数据库阻塞的方法及装置
CN102546732B (zh) * 2010-12-31 2015-03-18 北大方正集团有限公司 一种网页中的文件传输方法及系统
US8650284B2 (en) * 2011-02-28 2014-02-11 Oracle International Corporation User activity monitoring
CN102217241B (zh) * 2011-06-07 2016-10-12 华为技术有限公司 一种数据处理的方法及接入节点
WO2013029051A2 (en) 2011-08-25 2013-02-28 to fuVIRTUSTREAM, INC. Systems and methods of host-aware resource management involving cluster-based resource pools
US8751568B1 (en) * 2012-02-13 2014-06-10 Symantec Corporation Systems and methods for data loss prevention
US8706871B2 (en) * 2012-07-20 2014-04-22 Blue Kai, Inc. Tag latency monitoring and control system for enhanced web page performance
US10666533B2 (en) 2012-07-20 2020-05-26 Oracle International Corporation Tag latency monitoring and control system for enhanced web page performance
CN103581133B (zh) * 2012-07-31 2017-04-05 国际商业机器公司 Web服务器对访问请求发送响应的方法和系统
CN102905300B (zh) * 2012-09-14 2016-09-07 北京中创信测科技股份有限公司 基于网络数据的lte仿真测试流程自动生成方法
US20140136952A1 (en) * 2012-11-14 2014-05-15 Cisco Technology, Inc. Improving web sites performance using edge servers in fog computing architecture
US9503310B1 (en) * 2012-11-27 2016-11-22 Leidos, Inc. Methods and systems of dynamic management of resources in a virtualized environment
US11134116B2 (en) * 2013-03-15 2021-09-28 D2L Corporation System and method for dynamically loading a webpage
CN103365542B (zh) * 2013-07-01 2016-08-31 上海携程商务有限公司 用户点击行为展示方法及系统
US10496517B2 (en) * 2014-02-04 2019-12-03 ZeroTurnaround AS System and method for providing runtime diagnostics of executing applications
CN104021082B (zh) * 2014-06-16 2017-03-01 贝壳网际(北京)安全技术有限公司 一种针对浏览器的远程调试方法及装置
US10318615B1 (en) * 2014-06-18 2019-06-11 Amazon Technologies, Inc. Modeling and measuring browser performance using reference pages
CN104216943A (zh) * 2014-06-24 2014-12-17 用友优普信息技术有限公司 自动收集阻塞信息方便事后分析数据库阻塞的方法及装置
US10129322B2 (en) * 2014-09-29 2018-11-13 D2L Corporation Method and system for determining browser compatibility
US10169481B2 (en) * 2015-02-18 2019-01-01 Adobe Systems Incorporated Method for intelligent web reference preloading based on user behavior prediction
CN107533544B (zh) * 2015-02-24 2021-01-08 微福斯有限责任公司 元素标识符生成
US9225625B1 (en) 2015-03-26 2015-12-29 Linkedin Corporation Detecting and alerting performance degradation during features ramp-up
CN104991957B (zh) * 2015-07-21 2018-08-07 北京润通丰华科技有限公司 一种确定网页打开时间的方法及装置
WO2017040861A1 (en) * 2015-09-03 2017-03-09 BlackLine Systems, Inc. Computing system including dynamic performance profile adaptation functionality
US20170070397A1 (en) * 2015-09-09 2017-03-09 Ca, Inc. Proactive infrastructure fault, root cause, and impact management
US10713109B2 (en) * 2017-09-29 2020-07-14 Apple Inc. Method and system for predicting failure events
JP6856876B2 (ja) * 2019-03-19 2021-04-14 富士通クライアントコンピューティング株式会社 情報処理装置及び情報処理システム
JP2023504956A (ja) * 2020-11-16 2023-02-08 バイドゥ オンライン ネットワーク テクノロジー(ペキン) カンパニー リミテッド 性能検出方法、装置、電子機器及びコンピュータ可読媒体

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0815277B2 (ja) * 1991-08-09 1996-02-14 インターナショナル・ビジネス・マシーンズ・コーポレイション パフォーマンス測定値を得るためのシステムおよび方法
US5481735A (en) * 1992-12-28 1996-01-02 Apple Computer, Inc. Method for modifying packets that meet a particular criteria as the packets pass between two layers in a network
JP3366475B2 (ja) * 1994-04-12 2003-01-14 三菱電機株式会社 データ処理速度の評価方法
US5781449A (en) * 1995-08-10 1998-07-14 Advanced System Technologies, Inc. Response time measurement apparatus and method
US5754774A (en) * 1996-02-15 1998-05-19 International Business Machine Corp. Client/server communication system
US5793976A (en) * 1996-04-01 1998-08-11 Gte Laboratories Incorporated Method and apparatus for performance monitoring in electronic communications networks
US6081835A (en) * 1996-04-04 2000-06-27 British Telecommunications Public Limited Company Internet server and method of controlling an internet server
US5696701A (en) * 1996-07-12 1997-12-09 Electronic Data Systems Corporation Method and system for monitoring the performance of computers in computer networks using modular extensions
US5974237A (en) * 1996-12-18 1999-10-26 Northern Telecom Limited Communications network monitoring
US6061724A (en) * 1997-01-29 2000-05-09 Infovista Sa Modelling process for an information system, in particular with a view to measuring performance and monitoring the quality of service, and a measurement and monitoring system implementing this process
US5884312A (en) * 1997-02-28 1999-03-16 Electronic Data Systems Corporation System and method for securely accessing information from disparate data sources through a network
US5872976A (en) * 1997-04-01 1999-02-16 Landmark Systems Corporation Client-based system for monitoring the performance of application programs
US6266681B1 (en) * 1997-04-08 2001-07-24 Network Commerce Inc. Method and system for inserting code to conditionally incorporate a user interface component in an HTML document
US6006260A (en) * 1997-06-03 1999-12-21 Keynote Systems, Inc. Method and apparatus for evalutating service to a user over the internet
CA2264781C (en) 1997-07-01 2002-02-12 Progress Software Corporation Testing and debugging tool for network applications
US6078956A (en) * 1997-09-08 2000-06-20 International Business Machines Corporation World wide web end user response time monitor
US5944784A (en) * 1997-09-30 1999-08-31 The United States Of America As Represented By The Secretary Of The Navy Operating methods for a universal client device permittting a computer to receive and display information from several special applications simultaneously
US6317868B1 (en) * 1997-10-24 2001-11-13 University Of Washington Process for transparently enforcing protection domains and access control as well as auditing operations in software components
US6286046B1 (en) * 1997-12-22 2001-09-04 International Business Machines Corporation Method of recording and measuring e-business sessions on the world wide web
US6438592B1 (en) * 1998-02-25 2002-08-20 Michael G. Killian Systems for monitoring and improving performance on the world wide web
US6311175B1 (en) * 1998-03-06 2001-10-30 Perot Systems Corp. System and method for generating performance models of complex information technology systems
US6209003B1 (en) * 1998-04-15 2001-03-27 Inktomi Corporation Garbage collection in an object cache
EP0952522B1 (en) 1998-04-22 2011-08-24 Nippon Telegraph And Telephone Corporation Method and device for acquiring usage data of an application
US6108662A (en) * 1998-05-08 2000-08-22 Allen-Bradley Company, Llc System method and article of manufacture for integrated enterprise-wide control
US6314463B1 (en) * 1998-05-29 2001-11-06 Webspective Software, Inc. Method and system for measuring queue length and delay
US20010037400A1 (en) * 1998-07-22 2001-11-01 Uri Raz Method and system for decreasing the user-perceived system response time in web-based systems
US6339750B1 (en) * 1998-11-19 2002-01-15 Ncr Corporation Method for setting and displaying performance thresholds using a platform independent program
JP2000172481A (ja) * 1998-12-10 2000-06-23 Canon Inc ナビゲ―ション方法及び装置並びに記憶媒体
US6157618A (en) * 1999-01-26 2000-12-05 Microsoft Corporation Distributed internet user experience monitoring system
US6427168B1 (en) * 1999-07-26 2002-07-30 Microsoft Corporation Architecture for system monitoring using high-performance providers
AU2001236568A1 (en) * 2000-01-28 2001-08-07 Ibeam Broadcasting Corporation A system and method for rewriting a media resource request and/or response between origin server and client
US20010037239A1 (en) * 2000-03-07 2001-11-01 Satoshi Kanatani Method for a network-based revenue model utilizing a raffle contest
US6584504B1 (en) * 2000-05-26 2003-06-24 Networks Associates Technology, Inc. Method and apparatus for monitoring internet traffic on an internet web page
US6834297B1 (en) * 2000-10-06 2004-12-21 Redline Networks, Inc. Web resource transfer acceleration system and method
US7600014B2 (en) * 2000-11-16 2009-10-06 Symantec Corporation Method and system for monitoring the performance of a distributed application
US6792459B2 (en) * 2000-12-14 2004-09-14 International Business Machines Corporation Verification of service level agreement contracts in a client server environment
US20020112049A1 (en) * 2000-12-14 2002-08-15 International Business Machines Corporation Measuring response time for a computer accessing information from a network
US7197559B2 (en) * 2001-05-09 2007-03-27 Mercury Interactive Corporation Transaction breakdown feature to facilitate analysis of end user performance of a server system
US7219145B2 (en) * 2001-05-30 2007-05-15 Qualcomm Incorporated Method and apparatus for individually estimating time required to download application programs to remote modules over wireless network

Also Published As

Publication number Publication date
CN101194247A (zh) 2008-06-04
CN101194247B (zh) 2010-04-28
JP2004537097A (ja) 2004-12-09
EP1379965A1 (en) 2004-01-14
CA2443283A1 (en) 2002-10-31
WO2002086743A1 (en) 2002-10-31
US20020184363A1 (en) 2002-12-05
EP1379965A4 (en) 2007-03-21

Similar Documents

Publication Publication Date Title
JP4334232B2 (ja) クライアント側の性能を測定するための方法、およびそのための命令を保持するコンピュータ読取可能な媒体、ならびにクライアント側の性能に応答する方法
US7600014B2 (en) Method and system for monitoring the performance of a distributed application
JP3167975B2 (ja) ワールド・ワイド・ウェブのエンド・ユーザ応答時間記録方法
EP1386240B1 (en) Synthetic transaction monitor
US6411998B1 (en) World wide web internet delay monitor
US7523191B1 (en) System and method for monitoring user interaction with web pages
EP1490775B1 (en) Java application response time analyzer
US7792948B2 (en) Method and system for collecting, aggregating and viewing performance data on a site-wide basis
US8135829B2 (en) Utilizing a single agent on a non-origin node for measuring the roundtrip response time of web pages with embedded HTML frames
US6112240A (en) Web site client information tracker
US20060085420A1 (en) Method and apparatus for monitoring real users experience with a website
US20070271375A1 (en) Method and apparatus for monitoring real users experience with a website capable of using service providers and network appliances
US7016953B2 (en) HTTP transaction monitor
US20050021736A1 (en) Method and system for monitoring performance of distributed applications
US20030131052A1 (en) Method and system for HTTP time-on-page monitoring without client-side installation
US8849981B2 (en) Response time benchmarking
WO2002029641A2 (en) Http transaction monitor with replay capacity
EP1739557A1 (en) Method for analyzing browsing and device for implementing the method
US20130263156A1 (en) Operation log collection method and device
US10775751B2 (en) Automatic generation of regular expression based on log line data
US20060230133A1 (en) On demand problem determination based on remote autonomic modification of web application server operating characteristics
US20060221852A1 (en) System and method utilizing a single agent on a non-origin node for measuring the roundtrip response time over a public or private network with HTTP/HTTPS network protocol
EP1026608A2 (en) Method and apparatus for logging web user activity using client-side support
WO2001002932A2 (en) User activity reporting browser
JP2000207317A (ja) 情報システム、サ―バ、情報収集方法、及び、記録媒体

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050418

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080513

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080730

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090325

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090623

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120703

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4334232

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120703

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130703

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term