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も極端に小さな値にせずに、それなりのサイズを指定してください。