Varnish

Varnish 4.0 Release Partyに参加してきました。 #v4rp #v4rp_tokyo

AWSVarnish勉強会

Varnish 4.0 Release Party

ハッシュタグ:#v4rp #v4rp_tokyo
イベントページ:http://www.zusaar.com/event/5317003

1。あいさつ。
3.0もここでやった。

varnish新バージョンリリース、様子見、いわなちゃんまち、検証ブログ、安心、実用段階。

2.ピザ+ビール
おいしかったです。

3.いわなちゃん
クックパッドプレミアム会員。

version4.0で変更が多い。

クライアント/バックエンドの通信スレッドを分離
VSLの強化
VCLの変更、かなりアグレッシブ。

クライアント/バックエンドの通信スレッドを分離
ほぼほぼ書き直しレベル。
V3までは、client・backendのやりとりを同一のスレッドで処理する。
V4ではclient・backendを別々のスレッドで処理する。
limitに達している場合は同一スレッドが使われている。
pipe時には

分離することで。。。。
パラレル

ストリームのフルサポート
最初にリクエストしたクライアントのみが対象がV3。
V4はその制限がなくなった。
V3.0.5ではfetchを行い新オブジェクトを転送する、fetchの間
V4はバックグランドでfetchを行い、自コネクションは古いオブジェクトを転送。

VSL Query Expresions
非常に強力なログのフィルタリング機能
コマンド一発でできて、負荷は小さい。

VSLのグルーピング
varnishの生ログ(VSL)は非常に強力
V3では難しかった。
V4ではグルーピングができるようになった。
group types・・・・・・session, request, vxid, raw

session
セッション単位でrequestをグループか
1セッションで複数のリクエストがある場合は複数出力
ログのprefixの[*]や[-]の個数はlevelを表す
[-4-]

request
1つのHTTPのリクエストに関わるトランザクション(vxid)をグルーピングする。

vxid
1つのトランザクション(vxid)をグルーピングする

raw
v3と同じフォーマット。
以前とはわかりやすくなった.
vxid > 0・・・トランザクションに関わるデータ
vxid == 0・・・トランザクションに関わらないデータ

まとめ
非常にわかりやすくなった。

VSL Query
レベル、タグ
*でのマッチング
:で区切られている場合でのKey
など

※0.9 > 0は一致しない。

VCLの変更
変更は非常に多い
スレッド分離による、独立性が高まった。
Directorがvmodに移管された
req., bereq.

purgeの変更
V3:purge
v4:return(purge)

vcl変更が多い。

Directorの変更
vmod化(vmod_directors)

roudrobin, fallback, hash, random
(DNSはなくなった、clientの代替にhashを使う)

起動オプションの変更
-w min[,max[,timeout]]がなくなった

セキュリティ対策
inline-Cがデフォルト無効に
 使用する場合は、vcc_allow_inline_cをonに
vmodがリクエストボディへのアクセスが可能に

累積バグの解消

#545

#1141

実例
1200万PV
ピークで100M
900のVPSを数台使ってるところに導入してみた。

expiresの計算が楽になった。

varnishstat
hit-rateが出なくなった。
varnishnsca
%Dが変わった。(秒からμ秒単位に
varnishhist
-P
varnishsizes
varnishreplay

persistentストレージのioの負荷が軽減
先頭siloがexpireしている場合としてない場合とV3, V4での挙動が変わった。

directorのハッシュ分散が同じにならない。

V4ではAgeを意識しないとキャッシュできなくなる。

バグっぽい
vcl_purge

#1489

#1490

バグフィックスを含んだ、v4.0.1を待つと良いかと。
expenditial

今まで、適当に使ったりしてましたがしっかりと
資料や、ソースコードみて復習しようと思います。

4.

20140429-201943.jpg
20140429-201943.jpg
20140429-201953.jpg
20140429-202000.jpg