我们有4台清漆服务器在负载均衡器后面。默认情况下,每个Varnish服务器都有自己的缓存。它们不共享缓存。这是一个问题,因为它需要一个特定页面的5-6页负载才能将其缓存在每个服务器中。
为了避免这个问题,我将Varnish存储从内存更改为文件。该文件存储在磁盘驱动器上,磁盘驱动器在所有Varnish服务器之间共享。所有Varnish服务器都能够正确启动,但不知怎么的,它们仍然在使用自己的缓存。我确实确认了这个缓存文件是由Varnish写入的。
知道怎么解决这个问题吗?
发布于 2016-01-05 15:54:33
我知道这个问题很老,但供将来参考:
该文件后端使用mmap将对象存储在内存中,该内存由磁盘上的未链接文件支持。
(来自https://www.varnish-cache.org/docs/4.0/users-guide/storage-backends.html)
这里最重要的词是unlinked,这意味着文件一旦发生,就不再在进程之外可用。它仍然可以被保存在mmap上的句柄的创建过程使用。从unlink(2)手册页:
如果名称是文件的最后一个链接,但是任何进程仍然打开该文件,那么该文件将一直存在,直到引用它的最后一个文件描述符关闭为止。
因此,简单地说:不,同一个文件后端不能共享,此外,目前还没有已知的方法在几个清漆实例之间共享缓存本身(大多数现有技术涉及链接实例来复制缓存内容,但这是复制而不是共享)。
https://stackoverflow.com/questions/26495145
复制相似问题