1月 282011
 

Varnish2.1.5がリリースされました
Varnish Cache 2.1.5
バグフィックスが主です

英語は苦手ですが簡単に訳してみました間違ってたらすいません
後で実際の動作は確認してみます

Two bugs relating to Content-Length and possible duplication of Content-Length headers have been resolved.

Content-Lengthが重複してしまう問題に関する二件のバグを修正しました
該当しそうなチケット duplicate Content-Length headers

Support for bourne-like “here”-documents in the command line interface, allowing <<__EOF__ and similar schemes.

bourneシェルっぽいヒアドキュメントをサポートしました。(<<__EOF__)

Fixed an issue with re-using connections after Chunked-Encoding.

Chunkedエンコード時の接続を再利用する問題を修正しました。

Fix a bug that would inflate the “lost header” count and could cause problems during heavy traffic over a single connection, typically seen by load testing.

一般的な負荷試験でよく行われる単一接続で大量トラフィックを流した際にlost headerカウントが実際の値より増えるバグに対処しました

Use the time of cache-insertion for “If-Modified-Since” requests if a “Last-Modified” header isn’t provided by the backend.

Last-Modifiedヘッダがバックエンドから提供されない場合、バックエンドに取得しに行った時刻をLast-Modifiedとして扱いIf-Modified-Sinceリクエストに対応するようにしました。
該当しそうなチケット Conditional GETs based on modification time are not honored if Last-Modified was not explicitly set

Merge multi-line Vary and Cache-Control headers from clients, which Google Chromium seem to split up.

Chromeで同じフィールドを複数行に分割してリクエストしてくる際に正しく解釈できない問題があったので(最初の行しかみなかった)
複数行にわたるVaryとCache-Controlはマージして扱うようにしました。
該当しそうなチケット VCL doesn’t account for duplicate headers with different content

Various build fixes and documentation improvements

ビルドが出来ない問題を修正し(よくチケットがあがってたSolarisとか?)、ドキュメントも改良しました。

Various bug fixes.

様々なバグフィックスを行いました

試験前なのにざくっと訳文みてくれた@W53SAありがとう!
東京きたら酒飲もうぜ


10月 222010
 

昨日Varnish2.1.4がリリースされました。

Varnish Cache 2.1.4

英語は苦手ですが簡単に訳してみました間違ってたらすいません

A bug in the binary heap layout caused inflated object counts, this has been fixed.

二分ヒープのレイアウトの問題でオブジェクトのカウントが溢れるバグを修正しました
→これかな? Changeset 5356

Much more comprehensive documentation.

ドキュメントが充実しました
→/usr/share/doc/にドキュメントが追加されるようになりました(varnish-docs-2.1.4-1.x86_64.rpm)

A DNS director that uses DNS lookups for choosing which backend to route requests to has been added.

DNSディレクターが追加されました
→詳しくは The DNS director
まだ動かしていないのであれですが
以下の場合有効そうです

    多段で構築している
    ネットワークがきちんと整理されている

要は範囲指定でガッツリ設定できるのである程度の台数を使用している場合設定が楽になりそうです。
間違ってたらすいません。

The client director now uses the variable client.identity for choosing which backend to send a given request to.

セッション維持機能が使えますということです。
複数のサーバがバックエンドにある場合においてAサーバで処理して返したユーザは次に接続する際もAサーバにつなぐということだと思います。
間違ってたらすいません。

String representation of now, making it easier to add Expires headers

2010/10/24追記:やっと動作がわかりました
nowをstringに自動的にキャストするようになりました。
これにより例えばExpiresの返却が簡単になります
vcl_deliver内で


set resp.http.Expires = now;

と書いた場合、前のバージョンではVCLがコンパイル出来ませんでしたが、2.1.4では


Expires: Sat, 23 Oct 2010 18:36:55 GMT

と帰ってきます。
ただ残念なことに以下の記述はできません


set resp.http.Expires = now + 10s;


[root@LIP-APP-01 etc]# varnishd -d -f /etc/varnish/default.vcl -C
Message from VCC-compiler:
Expected variable, string or semicolon
(input Line 71 Pos 29)
set resp.http.Expires = now + 10s ;
----------------------------#------

(訳THX:@W53SA)

Portability fixes for Solaris.

Solaris向けの修正があります。

Various bug fixes.

いろんなバグを修正


そういや少し気になったんですが
ここを見てたら最新版だけVarnish Cacheとなっていて
もしかしてVarnishブランドのほかソフトも出すのかな?とかかんぐってみたりw

あとRPMビルドするときにpython-sphinxが必要になってました


10月 162010
 

先日qpstudyでLTしてきた内容のうちVCLのデバッグについてのとこだけど抜き出してちょっと補足してwikiにまとめました。
LTのときは
varnishd -d -f [vclfile] -C
と言っていましたがよく考えたら-Cあってもなくてもいいんですよね・・・(Cコードを出すオプションなので)
僕はインラインCをよく使うのでいつもつけていたので癖になっていました

VCLのデバッグの仕方

せっかくなのでおまけで修正起動スクリプトにconfigtestも追加しました
Varnishのinitスクリプト改造(graceful対応)


10月 102010
 

またまたVarnishのLTをqpstudy#03でやってきました
今回はVCLを記述する際に分かりづらいサブルーチンのところとデバッグの仕方を軽く話しました
正直5分という時間で詰め込みすぎた感があって今後の課題かなーと思いつつ
Varnishを使う際の一助になれば幸いだと思っています
Continue reading »


9月 242010
 

お久しぶりです。

前回のqpstudyは乱入でLTを行ったのですが、今回は枠をいただけると言うことで
またまたVarnish関係のLTを行ないます。

「できる!Varnish ここを知ると便利なVCL(仮)」

というテーマで多少癖があるVCL(Varnishの設定ファイル)を書く上ではまりやすいところや
知っておくと便利なことを簡単に話させていただこうと思っています。

ただし、あくまで(仮)なのでテーマについては変更があるかもしれません。(Varnishってのはブレませんが)

場所:Niftyさん(大森)
日時:10月9日(土)
時間:18:00〜

リンク
qpstudy#03
参加申し込み@atnd
ビアバッシュ

ビアバッシュは前回すごく盛り上がりましたので皆様ぜひぜひ


7月 312010
 

Varnish2.1.3がリリースされたようです

varnishのブログからの情報だと
安定版の2.0.6と同等の安定性とパフォーマンスを確保したので是非2.1.3を使って欲しいとのことです

実はそのうち記事でだそうと思ってたのですが2.1.2は2.0.6に比べるとパフォーマンスが多少落ちていたのでこれでよくなると嬉しいです
(テスト条件は格納オブジェクト数が10ぐらいだったのでどうかとも思いますが・・・)

また変更点は
・critbitのバグを修正
 →2.1.2の際にLAが1に貼りつくという現象がありましたがおそらくそれがなおると思います(まだ未検証なので・・・)
・varnishncsaのバグ修正(ログの取りこぼしなどがあったようです)
・Rangeリクエストのバグを修正
・VCLにlogコマンドを追加
だそうです

RPMビルドの際にひとつだけ注意点があります
varnish.specファイルのバージョン指定が2.1.2になっているのでそこを2.1.3に変更する必要があります


[root@LIP-NAS-01 redhat]# diff varnish.spec.org varnish.spec
3c3
< Version: 2.1.2
---
> Version: 2.1.3

参考サイト
Varnish 2.1.3 – Use it!
Varnish2.1.3

ダウンロード
The Varnish HTTP Accelerator


7月 252010
 

昨日池袋でインフラ勉強会のキユーピー3分インフラクッキングでESIとインラインCについてちょこっと話してきました。
LT自体が始めて+飛び入りLTだということでいろいろ自身にツッコミを入れたいところとか多々あるんですが、次回以降の改善点として考えています。
Continue reading »


6月 232010
 

以前書いた記事(VarnishでESIを使うときの注意するべき点)で

Keep-AliveはOFFにするべき

ESI使用時はcontent-lengthがブラウザ側に返却されないようなのでOFFはほぼ必須です
どうしても使いたい場合はESIを使用するときのみkeep-aliveをOFFに・・・

直Varnishはやめた方がいい

Keep-aliveをオフにしても特定のクライアント(ab/wgetなど)で接続が維持されて5秒ほど待ってしまうことがあります
つまりKeep-Aliveが有効かつcontent-lengthがないときの挙動と同じになります
じゃぁどうすればいいか?
自分はフロントにNginxを置いてそこからVarnishにproxyしています

と書きましたがどうやら2.1.X系では改善されたようです

ということで比較してみます
Continue reading »


6月 202010
 

VarnishはVersion2.1.1からRangeリクエストに対応するようになりました。
例えば最近のドコモ端末で動画を再生する場合501KB以上だと
サーバがRangeリクエストに対応していないと再生出来なかったりしますので対応は必要です。

ただこの機能は実験的で実際のところどうなんでしょうか?試してみました。
Continue reading »


6月 202010
 

僕のサイトみたいに複数のドメイン(blog.xcir.net/xcir.net/wiki.xcir.net)管理しているけどVarnishサーバは一つの場合
公式サイトの設定例


acl purge {
        "localhost";
        "192.0.2.14";
}

sub vcl_recv {
        if (req.request == "PURGE") {
                if (!client.ip ~ purge) {
                        error 405 "Not allowed.";
                }
                purge("req.url ~ " req.url);
        }
}

だと違うドメインでも同じURLであれば消してしまいます。
ドメインを指定して安全にキャッシュをパージするにはどうすればいいでしょうか?
Continue reading »