varnish - 跨多个服务器共享 Varnish 缓存

标签 varnish

我们在负载均衡器后面有 4 个 Varnish 服务器。默认情况下,每个 Varnish 服务器都有自己的缓存。它们不共享缓存。这是一个问题,因为它需要加载特定页面的 5-6 个页面才能将其缓存在每个服务器中。

为了规避这个问题,我将 Varnish 存储从内存更改为文件。该文件存储在所有 Varnish 服务器共享的磁盘驱动器上。所有 Varnish 服务器都能够正确启动,但不知何故它们仍在使用自己的缓存。我确实确认缓存文件正在被 Varnish 写入。

知道如何解决这个问题吗?

最佳答案

我知道这个问题很旧,但供将来引用:

The file backend stores objects in memory backed by an unlinked file on disk with mmap.



(来自 https://www.varnish-cache.org/docs/4.0/users-guide/storage-backends.html)

这里的重要词是unlinked ,这意味着该文件一旦发生就在进程之外不再可用。它仍然可以被保存在它上面的句柄 vie mmap 的创建过程使用。
从 unlink(2) 手册页:

If the name was the last link to a file but any processes still have the file open the file will remain in existence until the last file descriptor referring to it is closed.



所以简而言之:不,不能共享相同的文件后端,除此之外,目前还没有已知的方法可以在多个 Varnish 实例之间共享缓存本身(大多数现有技术都涉及链接实例以复制缓存内容,但这是复制,而不是共享)。

关于varnish - 跨多个服务器共享 Varnish 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26495145/

相关文章:

nginx - Magento 2通过负载平衡器在多个magento服务器上共享哪些目录?

websocket - Varnish 和 websocket 待定

caching - 我可以用Varnish完成此操作吗?

drupal - 表单 block 不适用于匿名用户

magento - 当magento发回前端cookie时如何提供缓存页面

wordpress - 带有 wordpress 的 Varnish 破坏了 wordpress 可视化编辑器?

Wordpress Varnish Age=0 或不缓存(Cookies?)

Varnish 不会作为守护进程启动

varnish - 如何在Varnish 4.0中传递数据(标题?)

仅为PHP应用程序缓存图像