我们在负载均衡器后面有 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/