1

我正在尝试使用清漆调试不一致的行为。
我有一个应用程序,当更新一段内容时,会发出禁止请求以清漆,以便将其从缓存中删除并使该缓存无效。问题是虽然我可以在清漆日志中看到禁令,但这只是几次但在大多数情况下都不能正常工作。换个说法,当我保存一段内容时,会禁止 1374003254.031996 75 req.http.host ~ www.example.com && req.url ~ ^(.*)(?<!\d{1})539250(?!\d{1})539250 是 url 中存在的唯一内容 ID 形式的清漆。

我登录到清漆主机并检查清漆过程。执行 ps -ef |grep varn 给出
root 8889 1 0 15:19 ? 00:00:00 /usr/sbin/varnishd -P /var/run/varnish.pid -a :80 -T :8100 -f /etc/varnish/qa.vcl -u varnish -g varnish -h critbit -p http_max_hdr 256 -p thread_pool_min 200 -p thread_pool_max 4000 -p thread_pools 2 -p thread_pool_stack 262144 -p thread_pool_add_delay 2 -p session_linger 100 -p sess_timeout 60 -p listen_depth 4096 -p lru_interval 20 -p ban_lurker_sleep 0.2 -s malloc,1G

varnish 8897 8889 0 15:19 ? 00:00:00 /usr/sbin/varnishd -P /var/run/varnish.pid -a :80 -T :8100 -f /etc/varnish/qa.vcl -u varnish -g varnish -h critbit -p http_max_hdr 256 -p thread_pool_min 200 -p thread_pool_max 4000 -p thread_pools 2 -p thread_pool_stack 262144 -p thread_pool_add_delay 2 -p session_linger 100 -p sess_timeout 60 -p listen_depth 4096 -p lru_interval 20 -p ban_lurker_sleep 0.2 -s malloc,1G

有2个进程正常吗?

然后我在清漆cli中做了一个ban.list:

1374003254.031996 75 req.http.host ~ example.com && req.url ~ ^(.*)(?<!\d{1})539250(?!\d{1})
1374003202.365076 224G req.http.host ~ example.com && req.url ~ ^(.*)(?<!\d{1})539250(?!\d{1})
1374003116.772315 83G req.http.host ~ example.com && req.url ~ ^(.*)(?<!\d{1})539250(?!\d{1})
1374002967.450431 267G req.http.host ~ example.com && req.url ~ ^(.*)(?<!\d{1})539250(?!\d{1})
1374002756.701640 187G req.http.host ~ example.com && req.url ~ ^(.*)(?<!\d{1})539250(?!\d{1})

我只想知道是否有问题导致禁止不删除缓存的数据。

4

1 回答 1

0

您的清漆工艺线看起来不错。

Varnish 有一个管理流程,它启动(并监视)一个子节点,所有请求处理都在其中完成。这是您看到的两个过程。

如果你做了很多禁令,你应该考虑阅读 Varnish 书中的“智能禁令”一章。它将帮助您缩短禁令列表。

https://www.varnish-software.com/static/book/Cache_invalidation.html#smart-bans

于 2013-07-31T14:26:15.053 回答