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スクリプト化すると便利なんだろうけど、手動でも良いかなと。