【Squid FAQ】 最終更新日:2005年11月1日
【D-netプランページへ】【Squid Homeへ】 【FAQトップへ】
配布されたSquidの中には、cachemgr.cgi というCGIユーティリティが含まれており、これで統計を取ることができます。cachemgr.cgiの使い方や情報に関しては、専門のコンサルタントに確認してください。
sort -r -n +4 -5 access.log | awk '{print $5, $7}' | head -25
Note: 以下の情報は、Ver2.2の場合です。
最初にSquidを停止します。それには以下のコマンドを使います。
% squid -k shutdown
クリーンなキャッシュで開始させるもっとも早い方法は、設定ファイルの中のcache_dirで定義したディレクトリにあるswap.stateを書き換える方法です。(swap.stateは削除しないでください)書き換えは、以下のように行います。
% echo "" > /cache1/swap.state
再起動の際には、cache_dirの所有者で再起動するようにしてください。
時間のかかる別の方法としては、すべてのキャッシュディレクトリを作り直させる方法があります。最初に既存のキャッシュを移動廃棄します。
% cd /cache1
% mkdir JUNK
% mv ?? swap.state* JUNK
% rm -rf JUNK &
次にSquidのコマンドでキャッシュを生成します。
% Squid -z
by Rodney van den Oever, and James R Grinter
The RealPlayer (and RealPlayer Plus) 手動設定:
「すべてのコンテンツにHTTPの接続を試みる」
このオプションは、ファイヤーウォールなどによって、直接TCPでの接続ができないようなとき、データをHTTPに乗せて送るようにします。:(注意)このオプションを使った場合、受け取れないコンテンツがでる事もあります。
Squidでは設定ファイル(squid.conf)のアクセスコントロールで許可しない限り削除できません。 最初に以下のようなACLを付けなくてはいけません。
acl PURGE method PURGE
acl localhost src 127.0.0.1
http_access allow PURGE localhost
http_access deny PURGE
これは、ローカルのからの削除要求は受け付け、それ以外は拒否するACLです。
オブジェクトを削除するには、clientプログラムを使うことができます。
squidclient -p 8080 -m PURGE http://www.robata.org/
"-p 8080"はsquidのhttpポートです。 パージに成功すると以下のような"200 OK'"というレスポンスが返ってきます。
HTTP/1.0 200 OK
Date: Wed, 30 Apr 2003 23:27:00 GMT
Server: Squid/2.4.STABLE7
オブジェクトが見つからなかったなら、"404 Not Found "というレスポンスが返ってきます。
HTTP/1.0 404 Not Found
Server: Squid/2.4.STABLE7
Mime-Version: 1.0
バージョン1.1.9以後、Squidはキャッシュを転送するのに最適な場所を選ぶためICMP Round-Trip-Time (RTT) 測定を使えるようになっています。 以前はICP(インターネットキャッシュプロトコル)に最初に応答した親キャッシュへリクエストを転送していました。 現在ではもっとも緊密(RTT-wise)な親サーバを選べます。
ICMPをサポートしています。
重要なことは、親となるあなたのキャッシュサーバがICMPの機能を有効にする事です。これによりあなたのキャッシュサーバがRTT測定を測定し、ソースサーバ方が親キャッシュより緊密であればそちらへリクエストを転送します。
もしソースサーバへのRTTを測定するキャッシュサーバが欲しければ、Squidを"USE_ICMP"オプションを付けてコンパイルする必要があります。
これはソースファイルにあるsrc/Makefileならびにsrc/Makefile.inの中で、"-DUSE_ICMP=1"の部分のコメントを外しことで簡単に行えます。
ICMPパケットを送受信するpingerという外部プログラムをがあります。 これはroot権限で動作します。Squidをコンパイルしたあとでpingerは別途インストールする必要があります。 Makefileの中にpingerようのターゲットが入っています。
% make install
% su
# make install-pinger
設定ファイルにはキャッシュのデータベースをチューニングする3つのオプションがあります。 netdb_low と netdb_high は データベースに保つ最高・最低ラインのサイズを指定します。 netdb_ttl オプションはサイトをpingするミニマムの間隔です。もしnetdb_ttl を300(5分間)に設定するとICMPパケットは5分間は同じサイトに送られません。
その他のオプションで、minimum_direct_hopsはキャッシュに近いサーバを探し出すのに使われます。もしソースサーバがこれよりも近いと判断されたなら、直接リクエストはフォワードされます。
親サーバの使い方
親のキャッシュサーバで、RTT測定を含むICPリクエストに答えるようになっているなら、あなたのキャッシュは、設定ファイルでこれを使えるように指定する必要があります。
query_icmp on
これであなたからICP要求が発信されます。もしこのとき親キャッシュがRTT測定のICMPを戻せば、あなたのaccess.logには次のような記録がログの8カラム目に記録されることでしょう。
CLOSEST_PARENT_MISS/it.cache.nlanr.net
この場合、it.cache.nlanr.net が最も低いRTTでソースサーバの情報を返したということになります。どの親よりも、自分の方がRTTが小さかった場合には、ログには次のような記録がされるでしょう。
CLOSEST_DIRECT/www.sample.com
Inspecting the database
The measurement database can be viewed from the cachemgr by selecting "Network Probe Database." Hostnames are aggregated into /24 networks. All measurements made are averaged over time. Measurements are made to specific hosts, taken from the URLs of HTTP requests. The recv and sent fields are the number of ICMP packets sent and received. At this time they are only informational.
A typical database entry looks something like this:
Network recv/sent RTT Hops Hostnames
192.41.10.0 20/ 21 82.3 6.0 www.jisedu.org www.dozo.com
bo.cache.nlanr.net 42.0 7.0
uc.cache.nlanr.net 48.0 10.0
pb.cache.nlanr.net 55.0 10.0
it.cache.nlanr.net 185.0 13.0
This means we have sent 21 pings to both www.jisedu.org and www.dozo.com. The average RTT is 82.3 milliseconds. The next four lines show the measured values from our parent caches. Since bo.cache.nlanr.net has the lowest RTT, it would be selected as the location to forward a request for a www.jisedu.org or www.dozo.com URL.
Squid-2からはキャッシュしないようにする指定が、no_cacheオプションでできます。 例えば以下は10.0.1.0/24のネットワークのサーバのオブジェクトはキャッシュせずにソースサーバがすべてリクエストに答えます。
acl Local dst 10.0.1.0/24
no_cache deny Local
次の例はURLの中に「.html」を持つものをキャッシュしません。
acl HTML url_regex .html$
no_cache deny HTML
次の例は特定のURLのサーバをキャッシュしません。
acl XYZZY url_regex ^http://www.i.suck.com/foo.html$
no_cache deny XYZZY
次の例は、8:00から18:00の時間帯はキャッシュしません。
acl Jobtime time 08:00-11:00
no_cache deny Jobtime
キャッシュディレクトリを削除することはそれほど難しいことではありません。 しかしSquidを実行中にキャッシュディレクトリを削除することは困難です。Squidが動作中は常にキャッシュディレクトリが存在している必要があります。削除は次の手順になります。
squid -k shutdown
rm -rf /usr/local/squid/cache
squid -z
【D-netプランページへ】【Squid Homeへ】 【FAQトップへ】
Copyright© 1998-2003 ROBATA.ORG