我知道 Varnish 使用内存映射技术在内存中缓存数据,如果我在一台机器上执行以下命令,Varnish 的整体性能会受到影响吗?
例如
总内存大小 = 4GB,随机生成的虚拟 test.txt = 2GB
1. cat test.txt
2. mv test.txt /another-partition
3. cp test.txt /another-partition
4. mv test.txt /another-dir
5. cp test.txt /another-dir
我知道 Varnish 使用内存映射技术在内存中缓存数据,如果我在一台机器上执行以下命令,Varnish 的整体性能会受到影响吗?
例如
总内存大小 = 4GB,随机生成的虚拟 test.txt = 2GB
1. cat test.txt
2. mv test.txt /another-partition
3. cp test.txt /another-partition
4. mv test.txt /another-dir
5. cp test.txt /another-dir
答案取决于您的缓存使用的存储后端。
如果您已将 varnish 配置为使用基于文件的存储,您的文件操作可能会对性能产生影响。
在具有 4 GB 内存的专用系统上,我建议您使用大小约为 3 GB 的“malloc”作为缓存的存储空间。
请参阅:https ://www.varnish-cache.org/docs/trunk/users-guide/storage-backends.html
有趣的问题!
作为参考,来自 VM 子系统作者的这个页面将让您很好地了解可能发生的事情;
http://linux-mm.org/PageReplacementDesign
请注意,这实际上很难以当前形式回答(如果您正在谈论文件支持的缓存),因为它取决于缓存的热度、缓存项目的时间以及缓存中每个对象的“热度” .
假设如下:-
由于你的varnish cache size是10G,内存永远装不下,所以下面的公式比较有代表性
因此,以下可能是您运行的所有命令的结果。
这绝对是最坏的情况。所以,从广义上讲——影响是什么?
对 97% 的服务请求没有可忽略的影响。
在受影响的 3% 中,预计服务的延迟会更高——可能是 500 毫秒。
但是在这 3% 的不幸请求中,大约 2% 的请求无论如何都会很慢,因为他们想要从 6500Mb 缓存中取出一些东西,而这些东西无论如何都不会在页面缓存中!然而,他们现在确实遭受了高磁盘利用率的困扰。
因此,总结一下我做作和假设的例子,你会从广义上看到大约 3% 的效率损失。(100% 效率将是每个请求的所有对象都在内存中提供)。
在这个人为的例子中,“正常”运行的性能效率约为 98%。
对于不适合内存的缓存来说还不错!