#author("2025-04-15T05:42:15+00:00","default:iseki","iseki") ** キャッシュサーバの動作 [#oa9e9b4a] *** キャッシュPUTサーバの起動 [#n4dbc88e] キャッシュサーバ([[sl_cache]])は,起動すると最初にキャッシュPUTサーバと呼ばれるプロセスを1個だけforkします.~ キャッシュPUTサーバはキャッシュデータのDBへの保存を専門的に行うサーバです.キャッシュデータをキャッシュPUTサーバに集約して保存を行うのは2つの理由があります. +データ保存時のファイルロックの問題を避けるため(書き込むプロセスが1個だけならファイルロックの問題は生じない). +キャッシュPUTサーバへ接続できるのは localhost のみとし,これによりある程度のセキュリティを確保する. *** UDP中継プロセスとのネゴシエーション [#y86b782b] リレーサーバ([[sl_relay]])が ''-cs'', ''-cp'' または ''-cg'' オプション付で起動された場合,UDPの中継プロセス毎にキャッシュサーバ([[sl_cache]])にTCPによる接続を掛けてきます.UDP中継プロセスから接続を受けたキャッシュサーバはコントロール用プロセスをforkします.forkされたコントロール用プロセスはUDP中継プロセスとネゴシエーションを行い,それぞれの使用ポート番号や接続用のパスワードを交換します.~ 従ってキャッシュサーバのキャッシュコントロールプロセスは [[sl_relay]] のUDP中継プロセスと同じ数だけ起動されます. [[sl_relay]] が ''-cs''または ''-cp'' オプション付で起動されている場合(PUTが有効の場合)は,キャッシュコントロールプロセスはキャッシュPUTサーバへの中継プロセスを forkします.このプロセスは [[sl_relay]] からキャッシュデータを受信し,キャッシュPUTサーバへそのまま転送します.~ キャッシュコントロールプロセスはその後ループに入り,UDP中継プロセスからのリクエストを待ちます. *** リクエストへの応答 [#vd8d5f17]