新しいプロバイダにしてから、webの閲覧がときどき重くなる。
たぶん関係ないけど、たまたまsquidの高速化的な記事をいくつか読んだのでうちの設定も見直してみることに。
で、中で興味を惹かれたのがストレージに COSS を使うと言う物。
FreeBSDでportsから入れるとデフォルトは ufs なんだけど、これはキャッシュが一つのオブジェクトが1ファイルになる。COSS は、キャッシュディレクトリを一つのファイルで済ませて、仮想ファイルシステムを中に作るものらしい。
# ちなみに、squid 3 ではCOSSが使えなくなってるらしいとか、COSSが話題になったのは随分前だとか突っ込みどころ満載だけど、導入にはまったので書いておく。

squid.confを見ると、cache_dir を ufs から coss にすれば良いらしいけど、念のために /usr/ports/www/squid で make config してみたらコンパイルオプションの COSS が有効になっていなかったので、有効にして再インストールする。
続いて、squid.conf の cache_dir を書き換える。(squid.conf を読んでも書き方がわからなくて困った。マニュアルを読めと言う話であるが)
cache_dir coss /var/squid/cache/coss 10000 max-size=500000
とか書いて、squid -z するとなんか怒られた。どうも、block-size を大きくしないといけないようだ。(block-sizeのデフォルトが512で、512 << 24 = 8192Mを超えるとblock-sizeを増やさないといけないらしい)
cache_dir coss /var/squid/cache/coss 10000 block-size=1024 max-size=500000
これで、squid -z で 10GのCOSSファイルが作られる。
で、squidを起動してみると、以下のエラーが出る。
FATAL: storeCossDirSwapLogFile: 'cache_swap_log' is needed in your COSS configuration.
そこで、
cache_swap_log /var/squid/cache/%s
とかやる。
で、squidを起動すると、
Rebuilding COSS storage in /jail2/squid/cache/coss (DIRTY)
とcossを初期化してくれるようなことを言うんだけど、ばたばたとプロセスが落ちていく。
一度諦めてufsに戻したんだけど、納得いかなくてログディレクトリを見ていたらcoreファイルができていたので、gdbで読み込んでみたら、
Program terminated with signal 12, Bad system call.
だそーで、btしてみたら aio_read()で落ちてる。
その辺をキーワードに探してみたら、COSSを使う場合は kld_load aio か、squidのビルド時に AUFSも有効にしてあげる必要があるそうだ。
早速 squid を作り直して、再挑戦したら今度は無事に立ち上がって、しばらくしたら10Gのファイルのリビルドも終わった。

効果の程は・・・、どんなもんでしょうね?

カテゴリ

トラックバック(0)

このブログ記事を参照しているブログ一覧: squidでCOSS

このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/1747

コメントする

このブログ記事について

このページは、falseが2008年11月27日 20:06に書いたブログ記事です。

ひとつ前のブログ記事は「asteriskの導入 (2)」です。

次のブログ記事は「FreeBSD 7.1」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

広告

Powered by Movable Type 6.1.1