VarnishのVCLを再起動なしに再読み込みする

April 6, 2014 - varnish

/etc/varnish/default.vclを書き換えた時、

/etc/init.d/varnishd restart

ってやってたけど、reloadできることを今更知った。

vcl.list: 現在の読み込んでるVCLの一覧を見る

CentOSのyumで入れたvarnishはデフォルトでこんなふうになってる

$ varnishadm -T localhost:6082 vcl.list
active        579 boot

vcl.load: 新規にVCLをロードする

$ varnishadm -T localhost:6082 vcl.load boot-`date+%Y%m%d%H%M%S` /etc/varnish/default.vcl
VCL compiled.

この時点では利用可能な状態であって、まだ変更は反映されていない

$ varnishadm -T localhost:6082 vcl.list
active        579 boot
available       0 boot-20140406153127

vcl.use: ロードしたVCLに切り替える

$ varnishadm -T localhost:6082 vcl.use boot-20140406153127

何も表示されないけどちゃんと切り替わっている

$ varnishadm -T localhost:6082 vcl.list
available     526 boot
active         53 boot-20140406153127

ちなみに、真ん中の数値はactiveの場合は経過秒数で、availableになると数値が減っていく。 でも、0になっても居座り続ける。この数値の変化のルールはよくわかってない。

ということで不要な過去のvclは定期的に消さないとずっと残り続けてしまうので注意。

vcl.discard: ロード済みvclの破棄

$ varnishadm -T localhost:6082 vcl.discard boot

ここでも結果が表示されないけどちゃんと消えている。

$ varnishadm -T localhost:6082 vcl.list
available       11 boot-20140406155155

本当はinitスクリプト化すると便利なんだろうけど、手動でも良いかなと。