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会将其认为是临时存储的对象。