清漆需要大量RAM吗?


7

除了虚拟内存,Varnish的RAM使用情况如何?

需要多少RAM?

Answers:


13

您可以在几种不同的模式下运行Varnish。使用磁盘作为缓存存储库,在这种模式下,您可以安全地重新启动Varnish,而不会丢失缓存。这也意味着您可以支持非常大的缓存,并使操作系统的IO缓存将请求最多的内容保留在服务器内存中。此模式配置有标志-s file,/var/lib/varnish/varnish_storage.bin,1G

另一种模式是仅内存-Varnish仅将所有缓存的数据保留在内存中,而不写入磁盘。这样可以提供极快的响应时间,但是缓存大小受限于服务器拥有的内存量。另外,如果重新启动Varnish,则会丢失缓存,突然请求将开始充斥您的后端。但是请注意,Varnish极其稳定,并且只有在发布更新后(每6个月左右),我们才会重新启动Varnish。该模式配置如下-s malloc,3200M

因此,为回答您的问题,Varnish在具有更多RAM的情况下性能要好得多。我们有一个Amazon EC2实例,该实例具有3.5GB RAM,没有交换,并为Varnish提供了3GB RAM用于缓存。当前,我们几乎所有的后端站点都在缓存中,包括图像和PDF文件等。我绝对可以推荐此设置。



4

缓存显然在内存中蓬勃发展。但是,您需要多少取决于您的站点。

使用请求日志对清漆+您的站点进行基准测试,并查看内存使用量增长的速度。使用虚拟机测试可以使用不同的ram配置(启用ram气球驱动程序)处理多少个请求。


4

Varnish实际上支持多个存储后端。您可以将某些内容缓存到RAM,而将某些内容缓存到磁盘:

-s default=malloc,256m \
-s static=file,/var/lib/varnish/varnish_storage.bin,1G"

这对于将静态文件缓存(.css,.js文件)有条件地存储到磁盘,以及将整页缓存存储到RAM中最有用。您将需要适当调整.vcl文件以有条件地缓存到每个存储后端中:https ://www.getpagespeed.com/server-setup/varnish-static-files-cache

这样一来,您可以将内存占用量降到最低,同时仍将部分RAM用于高速缓存。


0

在大多数情况下(详细说明除外),为了获得良好的性能,您将需要系统上的可用内存(内核可用于缓存磁盘的可用内存)等于或大于网站经常访问的部分(内核)的大小。应该能够使用RAM来缓存您的清漆磁盘缓存,这可能是为什么默认情况下磁盘缓存是默认的原因。比这更多的免费ram可能会产生递减的回报,并且不会提供您在RAM上花费的金钱价值。

我在下面附加了一个经过修改的先前答案,它没有直接回答您的问题,但可能会帮助您了解上述答案的相关性,希望对您有所帮助。

Varnish中的默认缓存是“磁盘而不是RAM”,这可能是因为在专用于varnish的计算机上,磁盘上的varnish缓存无论如何都会缓存在RAM中(Linux内核的默认行为),这种情况会在读取或写入文件系统。

这也意味着拥有比网站经常访问的部分更大的可用ram可以大大提高清漆的性能,就好像它是使用ram缓存运行时一样,而不会在另一个服务器强制服务器切换到SWAP时(使膝关节屈膝)。事件发生,例如操作系统更新或cron作业被触发。

那么,什么时候应该使用专用的清漆RAM缓存?

如果可能出现以下情况,则将ram专用于清漆可能是一个好主意。

1-您的清漆安装是使用某种半虚拟化技术在虚拟机上进行的(PARA是关键字,因为在共享内核时会发生这种情况)。

这是因为内核磁盘缓存是由虚拟化主机处理的,因此在高负载的计算机上,RAM缓存可能每隔几秒钟就被另一个虚拟机吹走!

2-具有一个包含许多经常访问的大型对象(例如大型BLOBS)的数据库(或任何其他经常对磁盘进行大量读写操作的应用程序)

与varnish在同一台机器上的此类应用程序也会破坏varnish和数据库引擎/其他应用程序的内核磁盘缓存。

希望这可以帮助您做出选择,对于我以前的文章撰写方式,我向主持人表示歉意。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.