Storage backends

简介

varnish具有可任意扩展的存储后端,它可以将数据保存在不同载体上面。默认配置是使用指定大小的内存中。对于不同的部署方式,你可能需要调整存储的设置来适应相应的部署方式。

Malloc

语法:malloc[,size]

Malloc是基于内存的存储方式。每个对象都会从内存中来分配资源来进行存储。如果你的系统内存较小,那么swap将会被使用。

注意,这里的尺寸限制只限制了实际存储,同时使用各种内部机制使得每个对象在内存中大约占1k,这种情况也包括在真实的存储中。

size参数指定给 varnishd 分配最大内存大小,size的默认单位是byte,但是您也可以指定以下后缀:

  • K, k 千字节
  • M, m 兆字节
  • G, g 吉字节
  • T, t 太字节

默认的大小是不限制的。

malloc的性能依赖于内存速度,因此是非常快的。如果数据集大于可用内存,那么性能就依赖于操作系统的处理能力。

文件

语法: file[,path[,size[,granularity]]]

文件存储使用 mmap 通过非软链的磁盘文件来存储内存中的对象。

path参数可以指定一个路径,这个路径用来存放cache对象的文件,或者是varnishd创建存放cache文件。默认目录是 /tmp

size参数指定cache文件的大小,默认单位是byte,除非指定以下后缀:

  • K, k 千字节
  • M, m 兆字节
  • G, g 吉字节
  • T, t 太字节

如果path所指的文件存在并且没有指定大小的话,那么将会使用现有文件的大小。如果path指向的是一个不存在的文件,这是错误的。

如果存储文件早已经存在了并且指定了存储文件大小的话,那么它会被截断或者扩展到指定的大小。

注意,如果 varnishd 必须创建或者扩展文件的话,那么它不会预先分配额外的空间,从而导致磁盘碎片,这个对机械硬盘是不好的。所以最好预先使用dd创建文件,这样可以将磁盘碎片降低到最大程度。

granularity参数用来指定分配的粒度,所有分配都是四舍五入。默认粒度是字节,除非后面加了后缀。

默认的粒度大小是VM page的大小。如果你存储的大部分都是小对象,那么你就需要减小这个大小。

文件的性能往往受限于设备读写速度,使用大小和查找的时间。

持久化(实验性的)

语法: persistent,path,size {experimental}

持久化存储。varnish将会将对象存储在文件里。保护尽可能多的对象不受计划内外关闭varnish的影响。

path参数指定备份文件的路径,如果不存在,将会自动创建。

size参数指定备份文件的大小,默认单位是字节,除非带有以下后缀:

  • K, k 千字节
  • M, m 兆字节
  • G, g 吉字节
  • T, t 太字节

临时存储

如果你将后端存储的名字写为“Transient”那么它将会使用临时存储。

如果ttl低于参数shortlived,那么varnish会将其认为是临时存储的对象。

results matching ""

    No results matching ""