我在当前部署中遇到了一个问题需要解决。当前部署如下。
Varnish 在 80 端口,Nginx 在 8000 端口,uWSGI 支持
这里的问题是,客户希望实现一些业务逻辑所需的内部分析,这些分析使用 uWSGI 提供的 Python 实现。大多数 varnish 命中都没有被统计(命中是匿名的)。提出了两个解决方案。
- 从客户端访问非缓存服务器(这里的客户端是 Android 设备。每个请求两个请求在电池使用方面非常昂贵
- 将 varnish 上的请求代理或克隆到另一台服务器,以便分析服务器可以接收该请求。可能使用 UDP。
第二种解决方案相关吗? 有可能做到这一点吗? 如果可以,那么该怎么做?
答案1
vmod_curl
可以向外部端点发送额外请求。我建议您通过Varnish 的vmod_curl
一个模块来执行此操作。cURL
看https://github.com/varnish/libvmod-curl了解更多信息。
但是,对每个传入请求发送额外的调用可能会对您的分析系统造成很大的负担。您使用 Varnish 的原因可能是为了避免您的原始系统过载。
Varnish 的日志和统计工具
当谈到分析时,Varnish 提供的工具是首屈一指的。
以下是有关 Varnish 日志和统计工具的一些参考:
- http://varnish-cache.org/docs/6.0/reference/varnishlog.html
- http://varnish-cache.org/docs/6.0/reference/varnishncsa.html
- http://varnish-cache.org/docs/6.0/reference/varnishstat.html
- http://varnish-cache.org/docs/6.0/reference/varnishtop.html
日志记录(varnishlog
、varnishtop
& varnishncsa
)工具基于 VSL,因此这里有一些 VSL 参考:
- http://varnish-cache.org/docs/6.0/reference/vsl.html
- http://varnish-cache.org/docs/6.0/reference/vsl-query.html
最后,这里是对所使用的计数器的引用varnishstat
:http://varnish-cache.org/docs/6.0/reference/varnish-counters.html