VarnishCache3 <3    2011/06/18  いわなちゃん(@xcir)
自己紹介●   いわなちゃん(@xcir)●    携帯向けサイトやソーシャルゲームな会社で    VarnishやらC#やらPHPやったり●   Smalllightを最近触ってます●    六本木にいます●    自炊派なのでクックパッドさ...
VarnishCache3    リリースおめでとうございます●    いろんな新機能が増えましたね    ●   ESIでのgzipのサポート    ●   よりスマートな拡張(VMOD)    ●        デフォルトパラメータがよくな...
ESIでのgzipサポート●   3.0以前ではgzipのオブジェクトを解凍できな    かった    ●   つまりESIのように合成を行う場合はすべての要素        が        圧縮されていない必要があった●   3.0以降では...
ESIでのgzipサポート●    ただ効率的に使用するには    要素は圧縮されていないのが望ましいです     ●          要素が圧縮されてる場合            –   解凍→ESIコード解釈→その後の処理     ●  ...
よりスマートな拡張(VMOD)        @hmskさんが詳しく説明してくれると思いますので飛ばしま           す!
デフォルトパラメータが良くなった●    パフォーマンスがよくなるように設定されてい    ます●    すでに色々調整されている方はあまり関係ない    かもしれません●   面白いのがcc_commandが変わりました    ●   exe...
varnishncsaでカスタムログが使える!●   -Fオプションでカスタムログが指定できるよう    になりました    ●   varnishncsa -F "%h %l %u %t "%r" %s %b "%{Referer}i" "%...
ログ系コマンドで            正規表現を利用した絞り込み●   Varnishlog/ncsa/hist/sizesで利用可能です●    トランザクション中でマッチするものがあれば出力します    ●  Varnishlogの場合一...
ログ系コマンドで正規表現を利用した絞り込み
vcl_init,vcl_finiの追加●   VCLがロードされたときにvcl_init●   VCLがアンロードされたときにvcl_fini●   β2で確認した呼び出されるパタンです    ●        ただ正式版でいくつか見たところ...
Rangeリクエストのデフォルト有効●   Rangeリクエストがデフォルトで有効になりま    した    (僕のような)携帯で動画を扱うサイトは嬉しいと思い●    ます
ストリームサポート                                   ストリームOFF       1                  2            Varnish           バックエンド       ...
ストリームサポート                                ストリームON       1               2             Varnish       バックエンド        3’       ...
ストリームサポート            ストリームOFF            ストリームON
ストリームサポート                制限事項●    同一ファイルを同時にストリームはできません    ●        後続のストリームは保留されます
特定のストレージにオブジェクトを格納できる●    まず起動時にストレージの名前が指定できるよ    うになりました    ●   -s [ユニーク名=]ストレージタイプ[,opt]         –   -s filestorage=fil...
その他の変更点●   CLI接続してstatsができなくなりました●   VCLのチェックが厳密になりました    ●   同じ名前のbackendがある    ●   Backend内のprobeのキーが重複    ●   同じ名前のACL ...
こんなにかわった3.0!Lets enjoy Varnish Cache3.0!!
ちょっとまって!パラメータの削除があるよ
起動パラメータの互換がない変更点                          2.1→3.0●    削除された物    ●   cache_vbe_conns    ●   err_ttl    ●   purge_dups●    名...
ちょっとまって!結構VCL記述変わってるよ
VCL記述の変更点                    2.1→3.0●   (obj | beresp).cacheableの廃止●   ESIを使うときの指定方法●   vcl_fetchでのreturn(pass)が変更●   req....
●   (obj | beresp).cacheableの廃止●   Obj.cacheableとberesp.cacheableはなくなりました●    キャッシュするかどうかは以下のパラメータから判断    ●   beresp.ttl  ...
ESIを使うときの指定方法                     3.0以前                                            3.0以降sub vcl_fetch {                   ...
vcl_fetchでのreturn(pass)が変更                  3.0以前                     3.0以降sub vcl_fetch {           sub vcl_fetch {return...
req.hash += value;の記述変更           3.0以前                3.0以降req.hash += value;   hash_data(value);
文字列の結合の仕方が変わった          (!)           3.0以前              3.0以降req.url"AAA"       req.url+"AAA"          +演算子で結合するようになりました
LogメソッドがVMODに移動したよ                3.0以前                      3.0以降sub vcl_recv{              import std;log req.url;      ...
purge()がban()になったよ                3.0以前                                      3.0以降purge("req.http.host == " req.http.host ...
文字列中の%エスケープがなくなった           よ               3.0以前                                  3.0以降入力                                ...
参考程度に2.0→2.1        のアップデート方法●    2.0→3.0に上げるときは両方やれば問題ないで    す
起動パラメータの互換がない変更点                        2.0→2.1(参考)●    削除された物    ●   accept_fd_holdoff    ●   acceptor    ●   backend_htt...
VCL記述の変更点                                          2.0→2.1(参考)    ●    vcl_fetchでobj.*が使えなくなりました          ●   beresp.*に置換し...
あらためてLets enjoy Varnish Cache3.0!!  ありがとうございました
tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)
Upcoming SlideShare
Loading in...5
×

tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)

4,605

Published on

6/18クックパッドで行われたtokyo.vclでの発表資料です

0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,605
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
26
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

tokyo.vcl発表資料(VarnishCache3.0新機能とVUPの仕方)

  1. 1. VarnishCache3 <3 2011/06/18 いわなちゃん(@xcir)
  2. 2. 自己紹介● いわなちゃん(@xcir)● 携帯向けサイトやソーシャルゲームな会社で VarnishやらC#やらPHPやったり● Smalllightを最近触ってます● 六本木にいます● 自炊派なのでクックパッドさんの キッチンが羨ましくて困ります 絡んでくれると喜びます!
  3. 3. VarnishCache3 リリースおめでとうございます● いろんな新機能が増えましたね ● ESIでのgzipのサポート ● よりスマートな拡張(VMOD) ● デフォルトパラメータがよくなった ● varnishncsaでカスタムログ形式が使える! ● ログ系コマンドで正規表現を利用した絞り込み ● vcl_init,vcl_finiの追加 ● Rangeリクエストのデフォルト有効 ● ストリームサポート ● 特定のストレージにオブジェクトを格納できる ● Etc...
  4. 4. ESIでのgzipサポート● 3.0以前ではgzipのオブジェクトを解凍できな かった ● つまりESIのように合成を行う場合はすべての要素 が 圧縮されていない必要があった● 3.0以降ではgzip圧縮/解凍ができる ● 要素がgzipされていても解釈できる ● 格納時にgzip圧縮が可能 – なおESIだけのgzip対応ではないので他にも応用できます – 例えば今まではgzipしてるのとされていないのでそれぞ れキャッシュしてましたがそれが一つですみます
  5. 5. ESIでのgzipサポート● ただ効率的に使用するには 要素は圧縮されていないのが望ましいです ● 要素が圧縮されてる場合 – 解凍→ESIコード解釈→その後の処理 ● 要素が圧縮されてない場合 – ESIコード解釈→その後の処理 参考VCL sub vcl_miss { if (ESI処理を必要とするオブジェクト) { unset bereq.http.accept-encoding; } } sub vcl_fetch { if (ESI処理を必要とするオブジェクト) { set beresp.do_esi = true; set beresp.do_gzip = true; } }
  6. 6. よりスマートな拡張(VMOD) @hmskさんが詳しく説明してくれると思いますので飛ばしま す!
  7. 7. デフォルトパラメータが良くなった● パフォーマンスがよくなるように設定されてい ます● すでに色々調整されている方はあまり関係ない かもしれません● 面白いのがcc_commandが変わりました ● exec cc -fpic -shared -Wl,-x -o %o %s (3.0以前) ● exec $PTHREAD_CC $OCFLAGS $PTHREAD_CFLAGS -fpic -shared -Wl,-x -o %o %s (3.0) ● ここのコマンドはVCLのコンパイルに利用されるので色々調整す ると高負荷時に少し変わってきます
  8. 8. varnishncsaでカスタムログが使える!● -Fオプションでカスタムログが指定できるよう になりました ● varnishncsa -F "%h %l %u %t "%r" %s %b "%{Referer}i" "%{User-agent}i"● ・・・が%{XX}iで指定できるヘッダが限られて います ● Referer,Host,X-Forwarded-For,User-agent● 他にも%Dや%Tなどが使えないためApacheの記述そ のままとはいきませんのでちょっと注意が必要です
  9. 9. ログ系コマンドで 正規表現を利用した絞り込み● Varnishlog/ncsa/hist/sizesで利用可能です● トランザクション中でマッチするものがあれば出力します ● Varnishlogの場合一致した行だけではなく そのトランザクション全部出力します● -m Tag:Regexの形式です ● varnishlog -m "TxHeader:X-Cache: HIT" – この場合ヒットしたオブジェクトのログを出力します
  10. 10. ログ系コマンドで正規表現を利用した絞り込み
  11. 11. vcl_init,vcl_finiの追加● VCLがロードされたときにvcl_init● VCLがアンロードされたときにvcl_fini● β2で確認した呼び出されるパタンです ● ただ正式版でいくつか見たところ変わらずぽいです
  12. 12. Rangeリクエストのデフォルト有効● Rangeリクエストがデフォルトで有効になりま した (僕のような)携帯で動画を扱うサイトは嬉しいと思い● ます
  13. 13. ストリームサポート ストリームOFF 1 2 Varnish バックエンド 5 3 41. ユーザからリクエスト2. キャッシュがないのでバックエンドに問い合わせ3. バックエンドがVarnishにレスポンス4. バックエンドからのレスポンスを受けきるまで待つ5. ユーザにレスポンス
  14. 14. ストリームサポート ストリームON 1 2 Varnish バックエンド 3’ 31. ユーザからリクエスト2. キャッシュがないのでバックエンドに問い合わせ3. バックエンドがVarnishにレスポンス3. バックエンドからのレスポンスを   順次ユーザにレスポンス
  15. 15. ストリームサポート ストリームOFF ストリームON
  16. 16. ストリームサポート 制限事項● 同一ファイルを同時にストリームはできません ● 後続のストリームは保留されます
  17. 17. 特定のストレージにオブジェクトを格納できる● まず起動時にストレージの名前が指定できるよ うになりました ● -s [ユニーク名=]ストレージタイプ[,opt] – -s filestorage=file,/tmp/0,1G – -s persistentstorage=persistent,/tmp/1,1G – -s memorystorage=malloc,1G● そして付けた名前を利用してどこに格納するか 指定できます ● set beresp.storage="persistentstorage";
  18. 18. その他の変更点● CLI接続してstatsができなくなりました● VCLのチェックが厳密になりました ● 同じ名前のbackendがある ● Backend内のprobeのキーが重複 ● 同じ名前のACL ● ↑どれもVCLコンパイルの時に弾かれます● VCLのUnusedエラーを無視する起動オプション追加 ● -p vcc_err_unref=off ● backendの定義はあるけど参照していない場合でも警告だけ でエラーは出ない
  19. 19. こんなにかわった3.0!Lets enjoy Varnish Cache3.0!!
  20. 20. ちょっとまって!パラメータの削除があるよ
  21. 21. 起動パラメータの互換がない変更点 2.1→3.0● 削除された物 ● cache_vbe_conns ● err_ttl ● purge_dups● 名前が変わった物 ● http_headers → http_max_hdr ● max_esi_includes → max_esi_depth ● overflow_max → que_max
  22. 22. ちょっとまって!結構VCL記述変わってるよ
  23. 23. VCL記述の変更点 2.1→3.0● (obj | beresp).cacheableの廃止● ESIを使うときの指定方法● vcl_fetchでのreturn(pass)が変更● req.hash += value;の記述変更● 文字列の結合の仕方が変わった(!)● LogメソッドがVMODに移動したよ● purge()がban()になったよ● 文字列中の%エスケープがなくなったよ
  24. 24. ● (obj | beresp).cacheableの廃止● Obj.cacheableとberesp.cacheableはなくなりました● キャッシュするかどうかは以下のパラメータから判断 ● beresp.ttl – キャッシュ時間 ● beresp.grace – キャッシュが切れたときの猶予期間
  25. 25. ESIを使うときの指定方法 3.0以前 3.0以降sub vcl_fetch { sub vcl_fetch { if (req.url == "/test.html") { if (req.url == "/test.html") { esi; set beresp.do_esi = true; set obj.ttl = 24 h; set obj.ttl = 24 h; } elseif (req.url == "/cgi-bin/date.cgi") { } elseif (req.url == "/cgi-bin/date.cgi") { set obj.ttl = 1m; set obj.ttl = 1m; } }} }
  26. 26. vcl_fetchでのreturn(pass)が変更 3.0以前 3.0以降sub vcl_fetch { sub vcl_fetch {return(pass); return(hit_for_pass);} } vcl_fetchだけで他の箇所は変更ありません
  27. 27. req.hash += value;の記述変更 3.0以前 3.0以降req.hash += value; hash_data(value);
  28. 28. 文字列の結合の仕方が変わった (!) 3.0以前 3.0以降req.url"AAA" req.url+"AAA" +演算子で結合するようになりました
  29. 29. LogメソッドがVMODに移動したよ 3.0以前 3.0以降sub vcl_recv{ import std;log req.url; sub vcl_recv{} std.log(req.url); } logメソッドはvmod_stdに移動しました
  30. 30. purge()がban()になったよ 3.0以前 3.0以降purge("req.http.host == " req.http.host ban("req.http.host == " + req.http.host + "&& req.url == " req.url); "&& req.url == "+ req.url);
  31. 31. 文字列中の%エスケープがなくなった よ 3.0以前 3.0以降入力 入力log "AAABBB:%67%67%67%67%67%67%67%67"; std.log("AAABBB: %67%67%67%67%67%67%67%67");出力 出力13 VCL_Log c AAABBB:gggggggg 12 VCL_Log c AAABBB: %67%67%67%67%67%67%67%67
  32. 32. 参考程度に2.0→2.1 のアップデート方法● 2.0→3.0に上げるときは両方やれば問題ないで す
  33. 33. 起動パラメータの互換がない変更点 2.0→2.1(参考)● 削除された物 ● accept_fd_holdoff ● acceptor ● backend_http11 ● client_http11 ● obj_workspace ● purge_hash ● srcaddr_hash ● srcaddr_ttl
  34. 34. VCL記述の変更点 2.0→2.1(参考) ● vcl_fetchでobj.*が使えなくなりました ● beresp.*に置換してください ● サブルーチン内でのアクションの取り扱い 2.1以前 2.1以降sub vcl_recv { sub vcl_recv { if (req.request == "GET" && req.http.cookie) { if (req.request == "GET" && req.http.cookie) { lookup; return(lookup); } }} }
  35. 35. あらためてLets enjoy Varnish Cache3.0!! ありがとうございました
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×