キャッシュサーバを用いた分散 Web システムにおけるキャッシュ更新機構の検討
11T287 岡田 祥太 （最所研究室）
分散 Web システムにおける，キャッシュサーバのキャッシュ更新を効率的に行い，クライアントにできる限り品質の高いリソースを与えるためのキャッシュ更新機構の実現方法について行った検討を述
べる．

1

はじめに

Web サーバへのアクセス数の増加によるサーバの過負荷によってクライアントへのレスポンスが悪化することを防ぐため，我々の研究室では，大元のコンテンツを保存するサーバであるオリジンサーバの負荷量に応じて，使用するキャッシュサーバ数を増減させる
分散 Web システム [1] の開発が行われており，先行研
究 [2] では，キャッシュの更新方法を評価するためのシミュレータの開発が行われている．
本研究では，与えられた計算機資源に応じて最適なキャッシュ更新を行うことができるキャッシュ更新機構の開発を目指し，キャッシュサーバでできる限り品質の高いリソースをクライアントに与えるためのキャッシュ更新機構の実現方法と，キャッシュ管理に必要な情報を得るための手段について検討した．

2

分散 Web システムでのキャッシュ更新

キャッシュサーバは，Web サイトなどのコンテンツのキャッシュを蓄積しクライアントからの要求に対して，オリジンサーバに代わってコンテンツの配信を行うサーバである．
開発している分散 Web システムでは，キャッシュサーバからのキャッシュ更新をクライアントからのアクセス状況に影響されないようにするために，キャッシュサーバからのキャッシュ更新リクエストを処理するための計算機資源を確保しておく．このとき，キャッシュサーバ数に応じて，キャッシュサーバ 1 台あたりに割り当てられるオリジンサーバの計算機資源が変化してしまう．
本研究では，与えられた計算機資源に応じて最適なキャッシュ更新を行うことができるキャッシュ更新機構の開発を目指す．

3
3.1

キャッシュ更新
キャッシュの品質

キャッシュするコンテンツには静的なものと動的なものに分けられ，前者はどのリクエストに対しても同じものを返すため，キャッシングが可能である．これに対し，後者はリクエストに応じてコンテンツの内容を変化するため，一般にはキャッシュできないと考えられる．しかし変化の度合いが小さいものであれば，短時間であればキャッシング可能であると考えられる．
このようなコンテンツのキャッシュは時間が経過するほど，クライアントに提供する情報の品質が低下してしまう．そのためキャッシュに有効期限が設け，有効期限を過ぎたキャッシュは更新しなければならない．
コンテンツによって品質の低下具合には違いがあり，広告やイベント情報などの，一定期間しか意味を持たず，期間内は品質が保たれるが，有効期限が過ぎるとたちまち品質が低下してしまうものや，ブログや掲示板などの，キャッシングしてから徐々に品質は低下していくが，最新情報でなくともある程度の情報を得られるものがあり，これらを考慮して有効期限を決定しなければならない．

3.2

更新タイミング

キャッシュの更新タイミングは，プリフェッチとオンデマンドの 2 種類の方式が考えられる．
プリフェッチ
決められた時間ごとに定期的にキャッシュを更新する方式である．有効期限が切れる前にキャッシュを更新するため，キャッシュの期限切れを防ぎ，ユーザからのアクセスに常にキャッシュを返すことができるた
め，応答時間を短くすることができる．しかし，全てのキャッシュが定期的に更新されるので，誰も見ていないファイルのキャッシュまで更新されてしまう．そのため，Web サーバに負荷がかかりやすい．
オンデマンドユーザからの要求に対し，キャッシュの有効期限が過ぎていた場合，オリジンサーバへ更新要求を送り，キャッシュを更新してユーザに返す方式である．アクセスがない限り更新を行わないため，更新回数を減らすことができ，オリジンサーバへの負荷が低下するが，キャッシュを更新する時間分ユーザへの応答が遅れてしまう．
ユーザに与えるキャッシュの品質は，オンデマンドの方が高くなると考えられるが，応答時間が長くなるため，ユーザが不満を持ってしまう可能性がある．そこで，プリフェッチとオンデマンドを組合わせることによりこの問題を解決する．図 1 の赤色の期間に示す
ように，有効期限までにアクセスのあったキャッシュファイルはプリフェッチで更新し，青色の期間はアクセスがなかったので，オンデマンドに切り替える (紫の期間)．これにより，アクセスがないものをプリフェッチで更新することはないため，ユーザへの平均応答時間をそれほど伸ばすことなく，オリジンサーバへの負荷を減少させ，アクセスの多いものは常にキャッシュを保持できる．

4

キャッシュ更新機構の概要

キャッシュ更新機構の実現方法として，キャッシュモジュールに組み込む方法と，外付けで作成する方法が考えられる．内部に組み込む場合は，有効期限などのキャッシュファイルの情報を取得するのが容易だが，内部機構を熟知していなけれれば実装は難しい．外付けで作成する場合は，サーバプログラムへの依存度が少ないため，実装は容易であると考えられるが，キャッシュ情報の取得が難しいため，制度が落ちる可能性がある．本研究では，実現の容易さから外付けで作成する方法を用いることにした．
図 2 に本研究で用いるキャッシュ更新機構の概要を示す．ユーザからのアクセスに対してはキャッシュがあれば常にキャッシュを返し，キャッシュがなければオリジンサーバへアクセスしてキャッシュを作成する．
更新機構はアクセスログからキャッシュ情報を取得し，データベースへ格納する．そして，前回のキャッシュ更新からアクセスがあったキャッシュのみを更新する更新スケジュールを作成する．

5

キャッシュ更新機構の設計

図 3 にキャッシュ更新機構の設計を示す．キャッシュ
サーバ内にキャッシュがないコンテンツにユーザがアクセスすると，キャッシュ更新機構はアクセスログを解析し，有効期限や更新時間などのキャッシュ情報を取得する．それらの情報をデータベースに入力し，そこからキャッシュを更新するための，更新スケジュールを作成する．
更新スケジュールの作成は，プリフェッチの対象となっているものを，有効期限の遅いものから順に並べ䜽䝷䜲䜰䞁䝖䛛䜙䛾䜰䜽䝉䝇䜻䝱䝑䝅䝳䝃䞊䝞䜰䜽䝉䝇䝴䞊䝄䜻䝱䝑䝅䝳䝰䝆䝳䞊䝹䜻䝱䝑䝅䝳䜢䜻䝱䝑䝅䝳㏉䛩᝟ሗྲྀᚓ䜻䝱䝑䝅䝳䜢䜻䝱䝑䝅䝳 ᭦᪂䜸䝸䝆䞁䝃䞊䝞᭦᪂せồ᭦᪂ᶵᵓ

図 2: 更新機構概要ていき，有効期限から更新時間を引いた時刻に更新を開始するようにする．キャッシュの更新開始時に別のキャッシュを更新するようになっている場合，先に更新するキャッシュの更新を後に更新するキャッシュの更新開始時間より前にずらすことで，有効期限が切れる前に更新を行うことができる．

6

おわりにオリジンサーバの負荷を考慮したキャッシュ更新機構を提案した．また，アクセスログからキャッシュ情報を取得し，オリジンサーバのリソース量に適したキャッシュ更新スケジュールの作成を検討した．
今後の課題としては，キャッシュをより効率的に更新するために，優先度を付けて管理することや，オリジン側で静的コンテンツの更新リストを作成し，オリジン側で更新があった時にのみキャッシュサーバに更新させるなどが考えられる．

参考文献[1] 堀内晨彦, 最所圭三 : “クラウドに適した Web シ
ステムにおけるキャッシュサーバの負荷監視および負荷分散”, 電子情報通信学会技術研究報告, 2014.
[2] 杉山友啓, 最所圭三 : “分散 Web システムにおけるキャッシュ更新方法を評価するためのシミュレー
タの開発”, 平成 26 年度 電気関係学会四国支部連合大会論文集, 2014.

䜰䜽䝉䝇䝻䜾䜻䝱䝑䝅䝳䝰䝆䝳䞊䝹䜻䝱䝑䝅䝳᭦᪂ᶵᵓ᭷ຠᮇ㝈䝻䜾䝻䜾ゎᯒ䜰䜽䝉䝇䛜䛺䛛䛳䛯䛾䛷᭦᪂䛧䛺䛔ḟᅇ䜰䜽䝉䝇䛜䛒䛳䛯᫬䛻᭦᪂䠄䜸䞁䝕䝬䞁䝗䠅

図 1: キャッシュ更新タイミング䝕䞊䝍䝧䞊䝇䜻䝱䝑䝅䝳᭦᪂せồ䜻䝱䝑䝅䝳⟶⌮䝻䜾᝟ሗධຊ᭷ຠᮇ㝈䜎䛷䛻䜰䜽䝉䝇䛜䛒䛳䛯䛾䛷䜻䝱䝑䝅䝳᭦᪂䠄䝥䝸䝣䜵䝑䝏䠅䜰䜽䝉䝇᭷ຠᮇ㝈᭦᪂᫬㛫᭦᪂䝇䜿䝆䝳䞊䝹Ỵᐃ᭦᪂䝇䜿䝆䝳䞊䝹సᡂ

図 3: 更新機構設計