JP2009169704A - リクエスト受付処理プログラム、情報処理装置、及びリクエスト受付処理方法 - Google Patents

リクエスト受付処理プログラム、情報処理装置、及びリクエスト受付処理方法 Download PDF

Info

Publication number
JP2009169704A
JP2009169704A JP2008007547A JP2008007547A JP2009169704A JP 2009169704 A JP2009169704 A JP 2009169704A JP 2008007547 A JP2008007547 A JP 2008007547A JP 2008007547 A JP2008007547 A JP 2008007547A JP 2009169704 A JP2009169704 A JP 2009169704A
Authority
JP
Japan
Prior art keywords
connection
client device
entry
queue
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2008007547A
Other languages
English (en)
Inventor
Yoshifumi Ujihashi
善史 宇治橋
Koichi Kumon
耕一 久門
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008007547A priority Critical patent/JP2009169704A/ja
Publication of JP2009169704A publication Critical patent/JP2009169704A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Computer And Data Communications (AREA)

Abstract

【課題】情報処理装置が提供する接続済みソケット格納用のキューのキューサイズを有効利用し、かつ、接続済みソケット格納用のキューが溢れて情報処理装置が過負荷状態に陥ったときでも、後続のクライアント装置からのリクエストを受け付けることができるようにする。
【解決手段】サーバ装置1が備えるコネクション受付部11が、クライアント装置2との接続を確立し、接続が確立されたクライアント装置からユーザ情報を受信し、格納部12が、クライアント装置のリクエストのエントリをコネクションキュー20に格納し、拒否部13が、コネクションキュー20に格納されるエントリの総数が所定値を超えたときに、コネクションキュー20から外すエントリを決定し、決定されたエントリをコネクションキュー20から外し、エントリに対応するクライアント装置2との接続を切断する。
【選択図】図3

Description

本発明は、クライアント装置からのリクエストを受付処理するリクエストの受付処理プログラム、情報処理装置、及びリクエスト受付処理方法に関する。
パケットに即時性、廃棄性の優先度を持たせ、通常時には即時性の優先度が高い音声パケットから順にキューから取り出し、輻輳時には廃棄性の優先度が低い音声パケットを廃棄することによって、パケットを適切にフロー制御する、パケット交換機の輻輳制御方法が提案されている(特許文献1参照)。
特開平01−221042号公報
TCPクライアントサーバシステムにおいて、クライアント装置からサーバ装置に対して一度に多数のリクエストが発行されると、サーバアプリケーションの接続確立(accept()処理による接続済みソケットの作成)頻度が、クライアント装置からのリクエストの到着頻度に追いつかなくなり、サーバ装置が過負荷状態になることがある。サーバ装置が過負荷状態に陥り、リッスンソケットのバックログキューがオーバーフローする(溢れる)と、従来のクライアントサーバシステムでは、後続のクライアント装置からのリクエストを受け付けられなくなる。リッスンソケットは、サーバ装置が、クライアント装置からの接続要求を受け付けるためのソケットである。また、バックログキューは、クライアント装置からの接続要求を格納するキューである。
上記のようなTCPクライアントサーバシステムで、あるクライアント装置のユーザが多量のリクエストを発行し、バックログキューが溢れると、後続のユーザのアクセスは無条件に拒否される。このように、あるユーザの過剰利用が他のユーザの利用に影響を与えると、ユーザ間の不公平が発生する。
このようなユーザ間の不公平を解決する技術として、以下に説明するようなキュー分割方式がある。まず、サーバ装置に、接続済みソケットを格納するキューをユーザ毎に設ける。サーバ装置が、リッスンソケットのバックログキューがオーバーフローしないように、他の処理より優先的に接続確立処理を行って接続済みソケットを作成し、作成した接続済みソケットをユーザ毎のキューに格納していく。サーバ装置は、リクエストしたユーザのキューが溢れたら、そのユーザの接続確立を拒否し、リクエストしたユーザのキューが空いていたらそのユーザのリクエストを受け付ける。このキュー分割方式では、常に各ユーザ用のキューが確保されているので、他のユーザによるリクエストに影響されてアクセスが拒否されることはない。しかし、この方式でも以下に述べるような問題がある。
上述したようなキュー分割方式は、ユーザ毎にキューサイズを設定する必要があるので、ユーザ数が多い場合や、リクエスト数が特定のユーザに偏っている場合は、サーバ装置のリソースを効率的に利用できないという欠点がある。例えば、各ユーザのキューサイズを、サーバ装置全体で確保できるキューサイズを等分したサイズに設定すると、特定のユーザが多数のリクエストを発行し、他のユーザがリクエストを発行していない場合に、サーバ装置は、システム全体で確保できるキューサイズのユーザ数分の1しかリクエストを受け付けられない状態になる。各ユーザのキューサイズは、工夫すれば、特定のアクセスパターンで最適になるように設定することができるかもしれないが、全てのアクセスパターンにおいて適切なキューサイズを各ユーザに設定することは不可能である。
本発明は、情報処理装置が提供する接続済みソケット格納用のキューのキューサイズを有効利用し、かつ、該接続済みソケット格納用のキューが溢れて情報処理装置が過負荷状態に陥ったときでも、後続のクライアント装置からのリクエストを受け付けることができるリクエスト受付処理プログラムの提供を目的とする。
また、本発明は、接続済みソケット格納用のキューのキューサイズを有効利用し、かつ、該接続済みソケット格納用のキューが溢れて過負荷状態に陥ったときでも、後続のクライアント装置からのリクエストを受け付けることができる情報処理装置の提供を目的とする。
また、本発明は、情報処理装置が提供する接続済みソケット格納用のキューのキューサイズを有効利用し、かつ、該接続済みソケット格納用のキューが溢れて情報処理装置が過負荷状態に陥ったときでも、後続のクライアント装置からのリクエストを受け付けることができるリクエスト受付処理方法の提供を目的とする。
本リクエストの受付処理プログラムは、クライアント装置からのリクエストを処理する情報処理装置における前記リクエストの受付処理プログラムであって、コンピュータに、前記クライアント装置から接続要求を受けて該クライアント装置との接続を確立する接続確立処理と、該接続が確立されたクライアント装置から該クライアント装置のユーザ情報を受信する受信処理と、前記クライアント装置のリクエストのエントリをコネクションキューに格納する格納処理と、前記コネクションキューに格納されるエントリの総数が所定値を超えたときに、前記コネクションキューから外すエントリを決定する決定処理と、前記決定されたエントリを前記コネクションキューから外し、該エントリに対応するクライアント装置との接続を切断する切断処理とを実行させる。
好ましくは、本リクエスト受付処理プログラムにおいて、前記決定処理は、前記エントリの数が最も多いクライアント装置に対応するエントリを前記コネクションキューから外すエントリとして決定する。
好ましくは、本リクエスト受付処理プログラムにおいて、前記決定処理は、前記ユーザ情報を用いて求まる優先度に基づいて、前記コネクションキューから外すエントリを決定する。
好ましくは、本リクエスト受付処理プログラムにおいて、前記受信処理は、前記接続が確立されたクライアント装置から、前記ユーザ情報の代わりに、サービス種別情報を受信し、前記決定処理は、前記サービス種別情報から求まる優先度に基づいて、前記コネクションキューから外すエントリを決定する。
好ましくは、本リクエスト受付処理プログラムにおいて、前記決定処理は、更に、エントリが最も最近に前記コネクションキューに格納されたエントリであるかを判断し、該判断結果に基づいて前記コネクションキューから外すエントリを決定する。
また、本情報処理装置は、情報処理装置であって、クライアント装置から接続要求を受けて該クライアント装置との接続を確立する接続確立手段と、該接続が確立されたクライアント装置から該クライアント装置のユーザ情報を受信する受信手段と、前記クライアント装置のリクエストのエントリをコネクションキューに格納する格納手段と、前記コネクションキューに格納されるエントリの総数が所定値を超えたときに、前記コネクションキューから外すエントリを決定する決定手段と、前記決定されたエントリを前記コネクションキューから外し、該エントリに対応するクライアント装置との接続を切断する切断手段とを備える。
また、本リクエストの受付処理方法は、クライアント装置からのリクエストを処理する情報処理装置における前記リクエストの受付処理方法であって、前記クライアント装置から接続要求を受けて該クライアント装置との接続を確立する接続確立ステップと、該接続が確立されたクライアント装置から該クライアント装置のユーザ情報を受信する受信ステップと、前記クライアント装置のリクエストのエントリをコネクションキューに格納する格納ステップと、前記コネクションキューに格納されるエントリの総数が所定値を超えたときに、前記コネクションキューから外すエントリを決定する決定ステップと、前記決定されたエントリを前記コネクションキューから外し、該エントリに対応するクライアント装置との接続を切断する切断ステップとを有する。
情報処理装置が提供するコネクションキューのキューサイズを有効利用することができ、かつ、コネクションキューが溢れて情報処理装置が過負荷状態に陥ったときでも、後続のクライアント装置からのリクエストを受け付けることが可能となる。
また、リクエストの処理についてクライアント装置間の公平を図ることができる。
また、接続を切断され難い度合いである優先度が最も低いクライアント装置の接続を切断することが可能となる。
また、最も最近にコネクションキューに格納されたエントリを該コネクションキューから外すことが可能となる。
以下に、本実施形態について、図を用いて説明する。図1は、本リクエスト受付処理方法の概要を説明する図である。図1に示すサーバ装置1は、クライアント装置(図1では図示を省略)からのリクエストを処理する情報処理装置である。リクエストは、クライアント装置からサーバ装置1に対する要求であり、少なくとも、クライアント装置からサーバ装置1に対する接続要求と、クライアント装置からサーバ装置1に対する、該クライアント装置が求めるサービス内容に応じた処理の実行要求とを含む。サーバ装置1が、クライアント装置からの接続要求を受け付けて、接続を確立し(図1の#aを参照)、クライアント装置のリクエストのエントリ(接続済みソケット)をコネクションキュー20の最後尾に格納する(図1の#bを参照)。コネクションキュー20は、接続が確立された全てのクライアント装置の接続済みソケットを格納するキューである。サーバ装置1は、コネクションキュー20に格納されている先頭のエントリを取り出して(図1の#cを参照)、クライアント装置からの要求リクエストを処理する(図1の#dを参照)。コネクションキュー20に格納されるエントリの総数が所定値(キューサイズ)を超えた場合、サーバ装置1は、コネクションキュー20から外すエントリを選択し(図1の#eを参照)、選択されたエントリに対応するクライアント装置との接続を切断する(図1の#fを参照)。
図2は、図1を参照して説明したリクエスト受付処理方法によるクライアント装置の状態遷移を示す図である。クライアント装置について接続が確立されると、接続済みソケットがコネクションキュー20に格納されて、保留状態となる。保留状態は、サーバ装置1との接続が切断されるか否かが保留された状態である。保留状態において、所定の条件下で、接続済みソケットがコネクションキュー20から取り出されてリクエスト処理状態となり、クライアント装置のリクエストの処理が実行される。また、上記保留状態において、クライアント装置の接続済みソケットがコネクションキュー20から外すエントリに対応するソケットとして選択されると、該接続済みソケットがコネクションキュー20から外されて、該クライアント装置がサーバ装置1との接続を切断され、終了状態となる。
図3は、本発明の実施例のシステム構成を示す図である。サーバ装置1は、図示を省略するネットワークを介して、1又は複数のクライアント装置2と接続される。
サーバ装置1は、オペレーティングシステムTCP通信処理部30とサーバアプリケーション部31とを備える。
オペレーティングシステムTCP通信処理部30は、サーバ装置1のオペレーティングシステムが備える周知のTCP通信処理機能を有する。具体的には、オペレーティングシステムTCP通信処理部30は、クライアント装置2からの接続要求をバックログキュー16に格納する。また、オペレーティングシステムTCP通信処理部30は、接続要求をしたクライアント装置2に対応する接続済みソケットを作成する。
サーバアプリケーション部31は、コネクション受付部11、格納部12、拒否部13、取出部14、リクエスト処理部15、処理開始/接続切断通知部17、コネクションキュー20を備え、これら各部によって本実施例のリクエスト受付処理を実現する。
コネクション受付部11は、クライアント装置2から接続要求を受けて、該クライアント装置2との接続を確立する。具体的には、コネクション受付部11は、クライアント装置2から接続要求がある度、オペレーティングシステムTCP通信処理部30によりバックログキュー16に格納された接続要求を、オペレーティングシステムTCP通信処理部30に要求することで、該バックログキュー16から接続要求を取り出して接続済みソケットを作成する。接続済みソケットは、クライアント装置2のリクエストのエントリである。コネクション受付部11は、バックログキュー16が溢れないようにするために、接続要求がバックログキュー16に格納される度にオペレーティングシステムTCP通信処理部30に要求し、接続済みソケットを作成する。
また、コネクション受付部11は、接続が確立されたクライアント装置2から該クライアント装置のユーザ情報を受信する。ユーザ情報は、クライアント装置2のユーザを一意に識別する識別情報(例えば、ユーザID)を含む情報である。コネクション受付部11が、接続が確立されたクライアント装置から、ユーザ情報の代わりに、サービス種別情報を受信するようにしてもよい。サービス種別情報は、クライアント装置2がサーバ装置1に対して処理を求めるサービスの種別(例えば、情報表示、ジョブ投入等)を示す情報である。格納部12は、接続済みソケット(リクエストのエントリ)を、接続済みソケットが作成される度にコネクションキュー20に格納する。
拒否部13は、コネクションキュー20が溢れたときに、コネクションキュー20から外すエントリを決定(選択)する。コネクションキュー20が溢れたときとは、コネクションキュー20に格納されるエントリの総数が所定値(例えば、キューサイズ)を超えたときである。拒否部13が、エントリの数が最も多いクライアント装置に対応するエントリをコネクションキュー20から外すエントリとして決定するようにしてもよい。また、拒否部13が、ユーザ情報を用いて求まる優先度に基づいて、コネクションキュー20から外すエントリを決定するようにしてもよい。また、拒否部13が、コネクション受付部11が受信したサービス種別情報から求まる優先度に基づいて、コネクションキュー20から外すエントリを決定するようにしてもよい。拒否部13が、クライアント装置2が属するグループについて予め定められた優先度や、クライアント装置2が接続を試みた時間等に基づいて、コネクションキュー20から外すエントリを決定するようにしてもよい。また、拒否部13が、更に、エントリが最も最近にコネクションキュー20に格納されたエントリであるかを判断し、該判断結果に基づいてコネクションキュー20から外すエントリを決定するようにしてもよい。
また、拒否部13は、上記決定されたエントリをコネクションキュー20から外し、該エントリに対応するクライアント装置2との接続を切断する。また、拒否部13は、接続が切断されたクライアント装置2に対して、接続が切断されたことを処理開始/接続切断通知部17を通じて通知する。
取出部14は、バックログキュー16に接続要求が格納されていない場合に、コネクションキュー20の先頭に格納されているエントリをコネクションキュー20から取り出す。リクエスト処理部15は、取出部14によって取り出されたエントリに対応するクライアント装置2のリクエストの処理(クライアント装置2が要求するサービス内容に応じた処理)を実行する。
処理開始/接続切断通知部17は、接続が切断されたクライアント装置2に対して、接続が切断されたことを通知する。また、処理開始/接続切断通知部17は、後述する処理開始要求をクライアント装置2に対して送信する。
なお、サーバ装置1及びサーバ装置1が備える各部の機能は、CPUとその上で実行されるプログラムにより実現される。当該本発明を実現するプログラムは、コンピュータが読み取り可能な記録媒体、例えば半導体メモリ、ハードディスク、CD−ROM、DVD等に格納することができ、これらの記録媒体に記録して提供され、又は、通信インタフェースを介してネットワークを利用した送受信により提供される。
図4は、図3に示すサーバ装置とクライアント装置とにおける処理シーケンスの一例を説明する図である。図4は、コネクションキュー20が溢れていないときの処理(正常処理)を示す。図4の#1乃至#3は、サーバ装置1の初期化処理を示す。サーバ装置1が備える図示を省略する所定の処理部(初期化処理部)が初期化処理を実行する。すなわち、#1において、サーバ装置1が備える初期化処理部が、リッスンソケット(lsock)を作成する(lsock=socket())。#2において、初期化処理部が、サーバアドレスをリッスンソケットに割り付ける(bind(lsock))。そして、#3において、初期化処理部がバックログキュー16を作成し、クライアント装置2からの接続要求を待つ(listen(lsock))。
#1’において、クライアント装置2が、ソケットを生成する(sock=socket())。そして、#2’において、クライアント装置2が、サーバ装置1に対して接続要求を行う(connect(sock))。次に、#4において、サーバ装置1のオペレーティングシステムTCP通信処理部30が、クライアント装置2からの接続要求をバックログキュー16に格納する。#5において、コネクション受付部11が、オペレーティングシステムTCP通信処理部30に問い合わせてバックログキュー16に接続要求があるかをチェックする(select(lsock))。バックログキュー16に接続要求がある場合、#6において、オペレーティングシステムTCP通信処理部30が、該接続要求をバックログキュー16から取り出して、該接続要求をしたクライアント装置2に対応する接続済みソケット(csock)を作成し、該接続済みソケットをコネクション受付部11に渡す(csock=accept(lsock))。その結果、#3’において、クライアント装置2とサーバ装置1との間の接続が確立する。
次に、#7において、コネクション受付部11が、クライアント装置2からのユーザID(uid)の受信を待つ(recv(csock,data))。#4’において、クライアント装置2がサーバ装置1に対してユーザIDを送信する(send(sock,data),data:uid)。そして、#5’において、クライアント装置2が、サーバ装置1からの処理開始要求の受信待ち状態となる(recv(sock,data))。処理開始要求は、サーバ装置1が、クライアント装置2に対して、クライアント装置2が要求するサービスの内容をサーバ装置1へ送信するよう求める要求である。次に、#8において、サーバ装置1のコネクション受付部11が、ユーザIDを受信すると、#9において、格納部12が、接続済みソケットをコネクションキュー20に格納する。#10において、取出部14が、接続済みソケットをコネクションキュー20から取り出す。そして、#11において、取出部14が、処理開始/接続切断通知部17を通じて、処理開始要求をクライアント装置2に対して送信する(send(csock,data),data:処理開始要求)。
#6’において、クライアント装置2がサーバ装置1から処理開始要求を受信すると、#7’において、クライアント装置2が、要求するサービスの内容をサーバ装置1に対して送信する。#12において、サーバ装置1のリクエスト処理部15が、クライアント装置2から送信されたサービスの内容に応じた処理を実行する。そして、#13において、サーバ装置1が、接続済みソケットを切断する(close(csock))。すなわち、サーバ装置1のリクエスト処理部15が、上記接続済みソケットに対応するクライアント装置2との接続を切断する。そして、#8’において、クライアント装置2がソケットを切断する(close(sock))。
図5は、図3に示すサーバ装置とクライアント装置における処理シーケンスの他の例を説明する図である。図5は、コネクションキュー20が溢れたときの処理を示す。サーバ装置1における#21から#28までの処理は、図4を参照して説明した#1から#8までの処理と同様である。また、クライアント装置2における#21’から#25’までの処理は、図4を参照して説明した#1’から#5’までの処理と同様である。
図5の#29において、接続済みソケットをコネクションキューに格納した結果、キューが溢れたとき、拒否部14が、切断する接続済みソケットを選択する。そして、#30において、拒否部14が、切断要求を処理開始/接続切断通知部17を通じてクライアント装置2に送信する(send(csock,data),data:切断要求)。切断要求は、クライアント装置2に対して、ソケットの切断(接続の切断)を求める要求である。#26’において、クライアント装置2がサーバ装置1からの切断要求を受信する。そして、#27’において、クライアント装置2がソケットを切断し(close(sock))、#31において、サーバ装置1の拒否部14がソケットを切断する(close(csock))。すなわち、サーバ装置1の拒否部14が、上記選択された接続済みソケットをコネクションキュー20から外し、該接続済みソケットに対応するクライアント装置2との接続を切断する。
図6は、サーバ装置が実行するリクエスト受付処理フローの一例を示す図である。まず、サーバ装置1が、リッスンソケットを作成し、クライアント装置2からの接続要求の待ち受け処理を行う(ステップS1)。コネクション受付部11が、バックログキュー16に接続要求があるかを判断する(ステップS2)。コネクション受付部11が、バックログキュー16に接続要求があると判断した場合は、コネクション受付部11は、クライアント装置2との接続を確立(接続済みソケットを作成)する(ステップS3)。次に、コネクション受付部11が、クライアント装置2からユーザIDを受信する(ステップS4)。格納部12が、コネクションキュー20にリクエストのエントリ(接続済みソケット)を格納する(ステップS5)。
次に、拒否部13が、コネクションキュー20が溢れた(オーバーフローした)かを判断する(ステップS6)。拒否部13が、コネクションキュー20が溢れていないと判断した場合は、上記ステップS2に戻る。拒否部13が、コネクションキュー20が溢れたと判断した場合は、拒否部13が、切断する接続済みソケットを選択する(ステップS7)。そして、拒否部13が、処理開始/接続切断通知部17を通じて、クライアント装置2に対して切断要求を送信する(ステップS8)。そして、サーバ装置1が、接続済みソケットを切断して(ステップS12)、上記ステップS2に戻る。
上記ステップS2において、コネクション受付部11が、バックログキュー16に接続要求がないと判断した場合は、取出部14が、コネクションキュー20にエントリがあるかを判断する(ステップS9)。取出部14が、コネクションキュー20にエントリがないと判断した場合は、上記ステップS2に戻る。取出部14が、コネクションキュー20にエントリがあると判断した場合は、取出部14が、処理開始/接続切断通知部17を通じて、処理開始要求をクライアント装置2に対して送信する(ステップS10)。コネクション受付部11が、クライアント装置2が要求するサービスの内容をクライアント装置2から受信し、リクエスト処理部15が、該サービスの処理を実行する(ステップS11)。そして、ステップS12において、ソケットが切断される。
コネクションキュー20が例えばFIFOキューである場合には、コネクションキュー20が溢れると、後続のソケットが無条件にアクセス拒否されてしまう。しかし、図6を参照して前述したリクエスト受付処理によれば、コネクションキュー20が溢れた場合にも、切断するソケットを選択する(ステップS7を参照)ことで、後続のソケットをコネクションキュー20に格納することができるようになる。
図7は、コネクションキューのデータ構造の第1の例を示す図である。コネクションキュー20は、ユーザリスト60、ユーザ構造体61、ソケットリスト62といったデータ構造を有する。ユーザリスト60には、各々のユーザのユーザ構造体61へのポインタが格納される。コネクション受付部11がユーザIDをクライアント装置2から受信すると、格納部12が、該ユーザIDが示すユーザに対応するユーザ構造体61を生成するとともに、ユーザリスト60内のポインタと該生成されたユーザ構造体61とを関連付ける。
ユーザ構造体61は、ユーザID、ソケット数、ポインタといったデータ構造を有する。「ユーザID」には、コネクション受付部11が受信したユーザIDが格納される。「ソケット数」には、ユーザIDに対応するユーザの接続済みソケットの数が格納される。「ポインタ」には、ソケットリスト62へのポインタが格納される。すなわち、「ポインタ」によって、ユーザ構造体61とソケットリスト62とが対応付けられている。
ソケットリスト62には、接続済みソケットの識別情報(例えば、ソケット番号)が格納される。格納部12は、該ユーザIDが示すユーザの接続済みソケットが作成される度に、先頭(図7では一番左の位置)から順番に接続済みソケットのソケット番号をソケットリスト62に格納する。格納部12が、ソケット番号をソケットリスト62に格納することによって、該ソケット番号に対応する接続済みソケットがコネクションキュー20に格納される。すなわち、図7に示す例では、ソケットリスト62中の最後尾(一番右の位置)に格納されているソケット番号に対応するソケットが、最も最近にコネクションキュー20に格納されたソケットである。
図7を参照して、切断対象のソケットの選択処理の第1の例について説明する。拒否部13が、図7に示すユーザリスト60中のポインタを、該ポインタが示すユーザ構造体61のソケット数が少ない順にソートする。拒否部13が、上記ソートした結果最後尾になるポインタが示すユーザ構造体61に対応付けられたソケットリスト62を取得する。例えば、拒否部13は、図7に示すユーザIDが100のユーザ構造体61に対応付けられたソケットリスト62を取得する。拒否部13が、取得したソケットリスト中の最後尾のソケット番号に対応するソケットを、切断対象のソケット(切断候補)として選択する。そして、拒否部13が、切断候補として選択されたソケットのソケット番号をソケットリスト62から削除する。なお、格納部12は、ソケットリスト62にソケット番号が格納されたとき、及び、ソケットリスト62からソケット番号が削除されたときに、ユーザ構造体におけるソケット数を更新する。
図8は、コネクションキューのデータ構造の第2の例を示す図である。図8に示す例では、ユーザ構造体61は、ユーザID、優先度、ポインタといったデータ構造を有する。「ユーザID」、「ポインタ」は、それぞれ、図7を参照して説明したユーザ構造体61の「ユーザID」、「ポインタ」と同様である。「優先度」には、ユーザが接続を維持される度合い(接続を切断され難い度合い)である優先度が格納される。例えば、「優先度」に格納された値「1」は、最も低い優先度を示し、該優先度に対応するユーザが最も接続を切断され易いことを示す。
格納部12は、例えば、コネクション受付部11が受信したユーザIDを用いて、予め所定のバッファ内に記憶されたユーザIDと優先度との対応情報に基づいて、上記コネクション受付部11が受信したユーザIDに対応する優先度を求め、求まった優先度を該ユーザIDに対応するユーザ構造体61中の「優先度」に格納する。格納部12が、ユーザIDを用いて各々のユーザのユーザ構造体61を特定し、特定されたユーザ構造体61が対応付けられているソケットリスト62を参照してユーザのソケットの数を算出し、求まったユーザのソケットの数に基づいて優先度を求めてユーザ構造体中に格納するようにしてもよい。格納部12は、例えば、上記求まったソケットの数が最も多いユーザに最も低い優先度を割り当てる。
図8を参照して、切断対象のソケットの選択処理の第2の例について説明する。拒否部13が、図8に示すユーザリスト60中のポインタを、該ポインタが示すユーザ構造体61の優先度が高い順にソートする。拒否部13が、上記ソートした結果最後尾になるポインタが示すユーザ構造体61に対応付けられたソケットリスト62を取得する。例えば、拒否部13は、図8に示すユーザIDが100のユーザ構造体に対応付けられたソケットリスト62を取得する。拒否部13が、取得したソケットリスト中の最後尾のソケット番号に対応するソケットを、接続を切断するソケット(切断候補)として選択する。そして、拒否部13が、切断候補として選択されたソケットのソケット番号をソケットリスト62から削除する。
図9は、コネクションキューのデータ構造の第3の例を示す図である。図9に示す例では、コネクションキュー20は、サービス種別リスト70、サービス種別構造体71、ソケットリスト72といったデータ構造を有する。サービス種別リスト70には、サービス種別構造体71へのポインタが格納される。コネクション受付部11がサービス種別情報をクライアント装置2から受信すると、格納部12が、該サービス種別情報が示すサービス種別に対応するサービス種別構造体71を生成するとともに、サービス種別リスト70内のポインタと上記生成されたサービス種別構造体71とを関連付ける。
サービス種別構造体71は、種別、優先度、ポインタといったデータ構造を有する。「種別」には、コネクション受付部11が受信したサービス種別が格納される。「ポインタ」には、ソケットリスト72へのポインタが格納される。すなわち、「ポインタ」によって、サービス種別構造体71(又はサービス種別)とソケットリスト72とが対応付けられている。「優先度」には、サービス種別に対応するソケットリスト72中のソケットが接続を維持される度合い(接続を切断され難い度合い)である優先度が格納される。例えば、「優先度」に格納された値「1」は、最も低い優先度を示し、該優先度に対応するサービス種別が最も接続を切断され易いことを示す。
ソケットリスト72には、接続済みソケットの番号(ソケット番号)が格納される。格納部12は、サービス種別に対応する接続済みソケット(サービス種別情報を送信したクライアント装置2に対応する接続済みソケット)を作成する度に、先頭(図9では一番左の位置)から順番に該接続済みソケットのソケット番号をソケットリスト72に格納する。
格納部12は、例えば、コネクション受付部11が受信したサービス種別が示すサービスの種別を用いて、予め所定のバッファ内に記憶されたサービス種別と優先度との対応情報に基づいて、上記サービス種別に対応する優先度を求め、求まった優先度を該サービス種別に対応するサービス種別構造体71中の「優先度」に格納する。格納部12が、サービス種別を用いて各々のサービス種別のサービス種別構造体71を特定し、特定されたサービス種別構造体71が対応付けられているソケットリスト72を参照してソケットの数を算出し、求まったソケットの数に基づいて優先度を求めてサービス種別構造体71中に格納するようにしてもよい。格納部12は、例えば、上記求まったソケットの数が最も多いサービス種別に最も低い優先度を割り当てる。
図9を参照して、切断対象のソケットの選択処理の第3の例について説明する。拒否部13が、図9に示すサービス種別リスト70中のポインタを、該ポインタが示すサービス種別構造体71の優先度が高い順にソートする。拒否部13が、上記ソートした結果最後尾になるポインタが示すサービス種別構造体71に対応付けられたソケットリスト72を取得する。例えば、拒否部13は、図9に示す種別が情報表示であるサービス種別構造体71に対応付けられたソケットリスト72を取得する。拒否部13が、取得したソケットリスト72中の最後尾のソケット番号に対応するソケットを、切断するソケット(切断候補)として選択する。そして、拒否部13が、切断候補として選択されたソケットのソケット番号をソケットリスト72から削除する。
以上から把握できるように、本実施形態の特徴を述べると以下の通りである。
(付記1)クライアント装置からのリクエストを処理する情報処理装置における前記リクエストの受付処理プログラムであって、
コンピュータに、
前記クライアント装置から接続要求を受けて該クライアント装置との接続を確立する接続確立処理と、
該接続が確立されたクライアント装置から該クライアント装置のユーザ情報を受信する受信処理と、
前記クライアント装置のリクエストのエントリをコネクションキューに格納する格納処理と、
前記コネクションキューに格納されるエントリの総数が所定値を超えたときに、前記コネクションキューから外すエントリを決定する決定処理と、
前記決定されたエントリを前記コネクションキューから外し、該エントリに対応するクライアント装置との接続を切断する切断処理とを実行させる
ことを特徴とするリクエスト受付処理プログラム。
(付記2)付記1に記載のリクエスト受付処理プログラムにおいて、
前記決定処理は、前記エントリの数が最も多いクライアント装置に対応するエントリを前記コネクションキューから外すエントリとして決定する
ことを特徴とするリクエスト受付処理プログラム。
(付記3)付記1に記載のリクエスト受付処理プログラムにおいて、
前記決定処理は、前記ユーザ情報を用いて求まる優先度に基づいて、前記コネクションキューから外すエントリを決定する
ことを特徴とするリクエスト受付処理プログラム。
(付記4)付記1に記載のリクエスト受付処理プログラムにおいて、
前記受信処理は、前記接続が確立されたクライアント装置から、前記ユーザ情報の代わりに、サービス種別情報を受信し、
前記決定処理は、前記サービス種別情報から求まる優先度に基づいて、前記コネクションキューから外すエントリを決定する
ことを特徴とするリクエスト受付処理プログラム。
(付記5)付記1乃至4のいずれか1項に記載のリクエスト受付処理プログラムにおいて、
前記決定処理は、更に、エントリが最も最近に前記コネクションキューに格納されたエントリであるかを判断し、該判断結果に基づいて前記コネクションキューから外すエントリを決定する
ことを特徴とするリクエスト受付処理プログラム。
(付記6)情報処理装置であって、
クライアント装置から接続要求を受けて該クライアント装置との接続を確立する接続確立手段と、
該接続が確立されたクライアント装置から該クライアント装置のユーザ情報を受信する受信手段と、
前記クライアント装置のリクエストのエントリをコネクションキューに格納する格納手段と、
前記コネクションキューに格納されるエントリの総数が所定値を超えたときに、前記コネクションキューから外すエントリを決定する決定手段と、
前記決定されたエントリを前記コネクションキューから外し、該エントリに対応するクライアント装置との接続を切断する切断手段とを備える
ことを特徴とする情報処理装置。
(付記7)付記6に記載の情報処理装置において、
前記決定手段は、前記エントリの数が最も多いクライアント装置に対応するエントリを前記コネクションキューから外すエントリとして決定する
ことを特徴とする情報処理装置。
(付記8)付記6に記載の情報処理装置において、
前記決定手段は、前記ユーザ情報を用いて求まる優先度に基づいて、前記コネクションキューから外すエントリを決定する
ことを特徴とする情報処理装置。
(付記9)付記6に記載の情報処理装置において、
前記受信手段は、前記接続が確立されたクライアント装置から、前記ユーザ情報の代わりに、サービス種別情報を受信し、
前記決定手段は、前記サービス種別情報から求まる優先度に基づいて、前記コネクションキューから外すエントリを決定する
ことを特徴とする情報処理装置。
(付記10)付記6乃至9のいずれか1項に記載の情報処理装置において、
前記決定手段は、更に、エントリが最も最近に前記コネクションキューに格納されたエントリであるかを判断し、該判断結果に基づいて前記コネクションキューから外すエントリを決定する
ことを特徴とする情報処理装置。
(付記11)クライアント装置からのリクエストを処理する情報処理装置における前記リクエストの受付処理方法であって、
前記クライアント装置から接続要求を受けて該クライアント装置との接続を確立する接続確立ステップと、
該接続が確立されたクライアント装置から該クライアント装置のユーザ情報を受信する受信ステップと、
前記クライアント装置のリクエストのエントリをコネクションキューに格納する格納ステップと、
前記コネクションキューに格納されるエントリの総数が所定値を超えたときに、前記コネクションキューから外すエントリを決定する決定ステップと、
前記決定されたエントリを前記コネクションキューから外し、該エントリに対応するクライアント装置との接続を切断する切断ステップとを有する
ことを特徴とするリクエスト受付処理方法。
(付記12)付記11に記載のリクエスト受付処理方法において、
前記決定ステップは、前記エントリの数が最も多いクライアント装置に対応するエントリを前記コネクションキューから外すエントリとして決定する
ことを特徴とするリクエスト受付処理方法。
(付記13)付記11に記載のリクエスト受付処理方法において、
前記決定ステップは、前記ユーザ情報を用いて求まる優先度に基づいて、前記コネクションキューから外すエントリを決定する
ことを特徴とするリクエスト受付処理方法。
(付記14)付記11に記載のリクエスト受付処理方法において、
前記受信ステップは、前記接続が確立されたクライアント装置から、前記ユーザ情報の代わりに、サービス種別情報を受信し、
前記決定ステップは、前記サービス種別情報から求まる優先度に基づいて、前記コネクションキューから外すエントリを決定する
ことを特徴とするリクエスト受付処理方法。
(付記15)付記11乃至14のいずれか1項に記載のリクエスト受付処理方法において、
前記決定ステップは、更に、エントリが最も最近に前記コネクションキューに格納されたエントリであるかを判断し、該判断結果に基づいて前記コネクションキューから外すエントリを決定する
ことを特徴とするリクエスト受付処理方法。
本リクエスト受付処理方法の概要を説明する図である。 クライアント装置の状態遷移を示す図である。 本発明の実施例のシステム構成を示す図である。 サーバ装置とクライアント装置とにおける処理シーケンスの一例を説明する図である。 サーバ装置とクライアント装置における処理シーケンスの他の例を説明する図である。 サーバ装置が実行するリクエスト受付処理フローの一例を示す図である。 コネクションキューのデータ構造の第1の例を示す図である。 コネクションキューのデータ構造の第2の例を示す図である。 コネクションキューのデータ構造の第3の例を示す図である。
符号の説明
1 サーバ装置
2 クライアント装置
11 コネクション受付部
12 格納部
13 拒否部
14 取出部
15 リクエスト処理部
16 バックログキュー
17 処理開始/接続切断通知部
20 コネクションキュー
30 オペレーティングシステムTCP通信処理部
31 サーバアプリケーション部

Claims (7)

  1. クライアント装置からのリクエストを処理する情報処理装置における前記リクエストの受付処理プログラムであって、
    コンピュータに、
    前記クライアント装置から接続要求を受けて該クライアント装置との接続を確立する接続確立処理と、
    該接続が確立されたクライアント装置から該クライアント装置のユーザ情報を受信する受信処理と、
    前記クライアント装置のリクエストのエントリをコネクションキューに格納する格納処理と、
    前記コネクションキューに格納されるエントリの総数が所定値を超えたときに、前記コネクションキューから外すエントリを決定する決定処理と、
    前記決定されたエントリを前記コネクションキューから外し、該エントリに対応するクライアント装置との接続を切断する切断処理とを実行させる
    ことを特徴とするリクエスト受付処理プログラム。
  2. 請求項1に記載のリクエスト受付処理プログラムにおいて、
    前記決定処理は、前記エントリの数が最も多いクライアント装置に対応するエントリを前記コネクションキューから外すエントリとして決定する
    ことを特徴とするリクエスト受付処理プログラム。
  3. 請求項1に記載のリクエスト受付処理プログラムにおいて、
    前記決定処理は、前記ユーザ情報を用いて求まる優先度に基づいて、前記コネクションキューから外すエントリを決定する
    ことを特徴とするリクエスト受付処理プログラム。
  4. 請求項1に記載のリクエスト受付処理プログラムにおいて、
    前記受信処理は、前記接続が確立されたクライアント装置から、前記ユーザ情報の代わりに、サービス種別情報を受信し、
    前記決定処理は、前記サービス種別情報から求まる優先度に基づいて、前記コネクションキューから外すエントリを決定する
    ことを特徴とするリクエスト受付処理プログラム。
  5. 請求項1乃至4のいずれか1項に記載のリクエスト受付処理プログラムにおいて、
    前記決定処理は、更に、エントリが最も最近に前記コネクションキューに格納されたエントリであるかを判断し、該判断結果に基づいて前記コネクションキューから外すエントリを決定する
    ことを特徴とするリクエスト受付処理プログラム。
  6. 情報処理装置であって、
    クライアント装置から接続要求を受けて該クライアント装置との接続を確立する接続確立手段と、
    該接続が確立されたクライアント装置から該クライアント装置のユーザ情報を受信する受信手段と、
    前記クライアント装置のリクエストのエントリをコネクションキューに格納する格納手段と、
    前記コネクションキューに格納されるエントリの総数が所定値を超えたときに、前記コネクションキューから外すエントリを決定する決定手段と、
    前記決定されたエントリを前記コネクションキューから外し、該エントリに対応するクライアント装置との接続を切断する切断手段とを備える
    ことを特徴とする情報処理装置。
  7. クライアント装置からのリクエストを処理する情報処理装置における前記リクエストの受付処理方法であって、
    前記クライアント装置から接続要求を受けて該クライアント装置との接続を確立する接続確立ステップと、
    該接続が確立されたクライアント装置から該クライアント装置のユーザ情報を受信する受信ステップと、
    前記クライアント装置のリクエストのエントリをコネクションキューに格納する格納ステップと、
    前記コネクションキューに格納されるエントリの総数が所定値を超えたときに、前記コネクションキューから外すエントリを決定する決定ステップと、
    前記決定されたエントリを前記コネクションキューから外し、該エントリに対応するクライアント装置との接続を切断する切断ステップとを有する
    ことを特徴とするリクエスト受付処理方法。
JP2008007547A 2008-01-17 2008-01-17 リクエスト受付処理プログラム、情報処理装置、及びリクエスト受付処理方法 Pending JP2009169704A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008007547A JP2009169704A (ja) 2008-01-17 2008-01-17 リクエスト受付処理プログラム、情報処理装置、及びリクエスト受付処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008007547A JP2009169704A (ja) 2008-01-17 2008-01-17 リクエスト受付処理プログラム、情報処理装置、及びリクエスト受付処理方法

Publications (1)

Publication Number Publication Date
JP2009169704A true JP2009169704A (ja) 2009-07-30

Family

ID=40970791

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008007547A Pending JP2009169704A (ja) 2008-01-17 2008-01-17 リクエスト受付処理プログラム、情報処理装置、及びリクエスト受付処理方法

Country Status (1)

Country Link
JP (1) JP2009169704A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012015971A (ja) * 2010-07-05 2012-01-19 Kddi Corp リクエスト受付装置、リクエスト受付方法、およびプログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62245441A (ja) * 1986-04-18 1987-10-26 Oki Electric Ind Co Ltd 待ち行列制御方式
JP2003283556A (ja) * 2002-03-26 2003-10-03 Hitachi Ltd データ通信中継装置及びシステム
JP2003536287A (ja) * 2000-02-08 2003-12-02 タンティビ・コミュニケーションズ・インコーポレーテッド 帯域幅予約システムのサービスのグレードおよび公平化方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62245441A (ja) * 1986-04-18 1987-10-26 Oki Electric Ind Co Ltd 待ち行列制御方式
JP2003536287A (ja) * 2000-02-08 2003-12-02 タンティビ・コミュニケーションズ・インコーポレーテッド 帯域幅予約システムのサービスのグレードおよび公平化方法
JP2003283556A (ja) * 2002-03-26 2003-10-03 Hitachi Ltd データ通信中継装置及びシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012015971A (ja) * 2010-07-05 2012-01-19 Kddi Corp リクエスト受付装置、リクエスト受付方法、およびプログラム

Similar Documents

Publication Publication Date Title
US7519067B2 (en) Method, system, and computer product for controlling input message priority
CN108124003B (zh) 网络管理设备连接处理方法、装置及系统
EP2783490B1 (en) Time-sensitive data delivery
JP2008040718A (ja) 負荷分散制御装置および方法
TW200920035A (en) Enhancement of end-to-end network QoS
JP2006031063A (ja) 優先制御装置
KR20130093732A (ko) 플로우 기반의 패킷 전송 장치 및 그것의 패킷 처리 방법
CN101938502A (zh) 一种服务器集群系统及负载均衡方法
CN107005467B (zh) 用于在交换机中路由数据的装置和方法
CN113407347B (zh) 资源调度方法、装置、设备和计算机存储介质
CN113472893B (zh) 数据处理方法、装置、计算设备及计算机存储介质
JP2001320423A (ja) 輻輳制御方法及び方式
JP2008059040A (ja) 負荷制御システムおよび方法
CN117592685A (zh) 业务处理方法、装置、电子设备及存储介质
JP2009169704A (ja) リクエスト受付処理プログラム、情報処理装置、及びリクエスト受付処理方法
JP2010044657A (ja) コマンド投入装置、コマンド投入システム、コマンド投入方法およびそのプログラム
CN113765871A (zh) 堡垒机管理的方法和装置
JP2009032083A (ja) 負荷制御装置及び方法及びプログラム
WO2018127013A1 (zh) 一种流数据的并发传输方法和装置
US20140025730A1 (en) Managing concurrent conversations over a communications link between a client computer and a server computer
JP2002342193A (ja) データ転送先サーバ選定方法及び装置及びデータ転送先サーバ選定プログラム及びデータ転送先サーバ選定プログラムを格納した記憶媒体
CN105721342A (zh) 多进程设备的网络连接方法和系统
JP2007300236A (ja) 移動体通信システム、交換機、基地局装置、及び下り通信データ送信方法
JP2013222407A (ja) 流量制御機能を有するシステム
JP4411980B2 (ja) パケット送出の順序制御プログラム及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100820

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121106

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121226

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130129