7月 132011
 

一回こんなタイトルで書いてみたかったいわなちゃんです。
別にこれだけ注意しとけ!というわけではないのですが、とりわけドハマリしそうでまず注意しておきたいポイントに付いて解説します。


Varnish3の新パラメータに
shortlived
というモノがあります。
これは指定TTLより短い秒数しかキャッシュしない場合テンポラリストレージ(Transient storage)に保存するというものです。
これはTTLが短い場合このストレージに保存することでパフォーマンスをあげようというものです(多分)
パフォーマンスをあげようというものなのでこいつはメモリストレージで確保されます


storage.list
200
Storage devices:
        storage.Transient =★★ malloc ★★
        storage.s0 = malloc

問題

以下の設定の時Transientストレージのメモリは最大どれだけ使うでしょうか?


-s malloc,100M

答え

あなたのマシンに搭載されているメモリ全て

もちろん、あなたが長時間のキャッシュしか保持していなくてTransientをあまり使わない構成であれば問題ないと思います。
しかしどれだけ使うかわからないというのは大変気持ち悪いので制限しましょう


-s Transient=malloc,100M \
-s malloc,100M

このように指定することでTransientストレージは最大100Mという制限がかかります。
またTransientだけの指定はやめてください、条件によってはセグフォります。


57MBのファイルを10回リクエストしたとき(テストのためshortlivedの設定値を上げています)
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
12011 varnish   20   0  860m 599m 1184 S 62.4 29.9   0:18.33 varnishd(指定なし)
12083 varnish   20   0  354m  93m 1208 S  0.0  4.7   0:04.18 varnishd(Transient指定あり)

またストレージのサイズで一つ注意点としてですが必ず転送すると想定される最大のファイルサイズ以上を指定してください。
例えば640MBのISOイメージがたくさんあるサイトでストレージのサイズを100Mとした場合
そのISOをリクエストすると503が返却されます。
そのためTransientも極端に小さな値にせずに、それなりのサイズを指定してください。


 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください