我有一个配备 6GB RAM 的小型 VPS,用于托管几个网站。
最近我注意到我的缓存内存大小相当高 - 见下文:
Cpu(s): 0.1%us, 0.1%sy, 0.0%ni, 99.1%id, 0.0%wa, 0.2%hi, 0.4%si, 0.0%st
Mem: 6113256k total, 5949620k used, 163636k free, 398584k buffers
Swap: 1048564k total, 104k used, 1048460k free, 3586468k cached
在调查是否有某种方法可以清除或清除它之后,我偶然发现了一个命令:
sync; echo 3 > /proc/sys/vm/drop_caches
我读到将其添加到 chron-task/job 中可能会很有用。这种方法值得推荐吗?或者这会导致潜在的问题吗?
我唯一担心的是,我在 Memcached 上使用了一个 Magento 安装 - 这会对它产生任何负面影响吗?
我当然不是专业人士因此我非常感谢一些专家的建议。
PS:我的 VPS 在 CentOS 5 x64 上运行,并且安装了 WHM + NGINX。
答案1
删除缓存可能会影响服务器的性能,因为每次删除缓存后,服务器都必须将经常访问的数据重新读回缓存中。
没有理由放弃缓存。对于 Linux 内核来说,用于缓存的内存基本上是免费的,并且会在应用程序需要时传递给它们。看看这网站了解更多信息。
关于存储在 memcached 中的数据 - 这不会受到删除页面/dentries/inodes 缓存的影响。
答案2
如上所述,除非您有非常令人信服的理由,否则删除缓存是没有意义的。如果您没有看到任何性能问题,请保持原样。
如果您是好奇的人,那么您可以调整参数 vm.vfs_cache_pressure。默认值为 100,这意味着内核将尝试以与回收交换相比公平的速率回收缓存。增加该值将导致缓存内存被更快地回收,而减少该值将导致交换被更快地回收,但请记住,这只是内核清除缓存或交换的积极性。实际结果因环境而异。
除了回显 3,您还可以回显 1 或 2。如果我没记错的话,回显 1 将清除页面缓存,而回显 2 将清除 dentry 和 inode 缓存。3 将清除页面缓存、dentry 和 inode 缓存。
答案3
拥有这种级别的缓存 RAM 并没有什么坏处。这就是 Linux 所做的。
删除缓存后,您是否看到性能有所提升?如果没有,则不值得安排它。
作为一方,你能使用更精细的方式控制缓存中的内容vmtouch
公用事业。