除虚拟内存之外,光油的内存使用情况如何?
需要多lessRAM?
您可以在几种不同的模式下运行清漆。 一个使用磁盘作为caching存储库,在这种模式下,您可以安全地重新启动Varnish而不会丢失caching。 这也意味着你可以支持一个非常大的caching,并让操作系统的IOcaching在服务器内存中保存请求最多的内容。 该模式使用标志-s file,/var/lib/varnish/varnish_storage.bin,1G
另一种模式是纯内存 – Varnish将所有caching数据保存在内存中,永远不会写入磁盘。 这可以提供非常快的响应时间,但caching大小仅限于您的服务器有多less内存。 此外,如果您重新启动Varnish,则会丢失caching,并且突然的请求将开始泛滥您的后端。 但是,请注意,清漆是非常稳定的,我们只有在发布更新(每6个月左右)时才重新启动清漆。 该模式configuration为-s malloc,3200M
所以要回答你的问题,清漆使用更多的内存更好。 我们有一个3.5GB RAM的亚马逊EC2实例,没有交换,并为caching提供3GB的内存。 目前,我们几乎有整个后端网站caching,包括图像和PDF文件等。我可以肯定地推荐这个设置。
http://varnish-cache.org/wiki/FAQ#HowdoIregulatehowmuchmemoryVarnishwilluseforcaching
redirect到这里: http : //varnish-cache.org/wiki/ArchitectNotes
caching显然在记忆中茁壮成长。 但是,您需要多less取决于您的网站。
基准清漆+您的网站使用请求日志,并看看有多快的内存使用增长。 使用vm来testing您可以使用不同的ramconfiguration处理多less个请求(启用ram气球驱动程序)。
清漆实际上支持多个存储后端。 你可以caching一些东西到内存,而东西到磁盘:
-s default=malloc,256m \ -s static=file,/var/lib/varnish/varnish_storage.bin,1G"
这对于有条件地将静态文件caching(.css,.js文件)存储到磁盘并将完整页面caching存储到RAM中是最有用的。 您需要适当调整您的.vcl文件,以便有条件地caching到每个存储后端: https ://www.getpagespeed.com/server-setup/varnish-static-files-cache
这将允许您保持内存占用至less,而仍然使用部分内存的caching。
在大多数情况下(阐述中的例外情况),为了获得良好的性能,您需要系统上的可用内存(可用于内核用于caching磁盘)等于或大于网站经常访问的部分的大小,内核应该可以使用RAM来caching你的清漆盘caching,这可能是为什么磁盘caching在varnish中是默认的。 比这更多的免费内存可能会带来收益递减,并且不会提供您花在内存上的资金。
我在下面附加了一个修改的以前的答案,它不包含你的问题的直接答案,但可能会帮助你形成对上述答案的相关性的理解,我希望它有帮助。
在光油中的默认caching是磁盘而不是RAM,这可能是因为,在专用于清漆的机器上,磁盘上的清漆caching将被caching在RAM中(Linux内核的默认行为),只要部分文件系统被读取或写入。
这也意味着拥有比网站经常访问的部分更大的免费内存将大大提高清漆的性能,就好像它是使用内存caching运行一样,而不会迫使服务器交换(到它的膝盖),当另一个事件发生,如操作系统更新,或者cron作业被触发。
那么我应该什么时候使用专用清漆RAMcaching?
如果下面的情况是可能的,那么专用ram清漆可以是一个好主意。
1-你的清漆安装是在虚拟机上使用一些半虚拟化技术(PARA是关键字,因为在共享内核时发生这种情况)。
这是因为内核磁盘caching由虚拟化主机处理,所以在高负载的机器上,RAMcaching可能会被不同的虚拟机每隔几秒钟吹起一次!
2-拥有一个数据库(或任何其他应用程序,经常读取或写入很多磁盘)与许多经常访问的大型对象(如大BLOBS)
在与清漆相同的机器上的这样的应用程序也将为清漆和数据库引擎/其他应用程序吹出内核磁盘高速caching。
我希望这可以帮助你做出select,我向主持人道歉我的上一篇文章的写作方式。