我尝试清除缓存和缓冲区。因为它们增长非常快,并且开始使用一些交换空间。这会影响系统吗?生产中运行的系统。或者还有其他解决方案吗?
Memory
total used free shared buffers cached
Mem: 31G 31G 207M 1.6M 331M 22G
-/+ buffers/cache: 7.9G 23G
Swap: 15G 281M 15G
答案1
您的交换空间只有 281MB,而您的总内存使用量为 31 GB。这只占总内存的 1%。
最有可能的是,交换中的数据很少使用,因此最好将其留在那里,并使用由此产生的可用内存作为缓冲区/缓存,这实际上可以加快系统运行速度。
除非您有强有力的证据表明系统由于交换和大型缓冲区/缓存而变慢,否则您不应该删除缓冲区/缓存。
答案2
我赞同 Tero Kikanen 的回答。看起来您的系统正在做它应该做的事情。它充分利用了您的 RAM(在其他地方没用的 RAM 都会被用作缓存,从而减少磁盘访问)。RAM 中任何一段时间未使用的数据都会被换出,因此您有更多的缓存可用,而一些启动后永远不会使用的二进制文件则位于您的交换分区中,等待稍后换入 - 这可能只会在明天或下周发生。
但是,在某些情况下,这种方法效果并不好。例如,一台几乎空闲的机器从一个磁盘向另一个磁盘传输的数据比其可用的 RAM 多。在磁盘到磁盘传输期间未使用的任何二进制文件及其数据都将被交换出去。大多数情况下,这不是什么大问题,但当您返回计算机并想继续浏览网页时,就会带来不便。您的浏览器可能会挂起 10 秒或更长时间,而您的高效但无聊的 Web 服务器将需要几秒钟的时间,直到所有二进制文件和数据都返回到 RAM。
然而,在繁忙的服务器上,这种情况不会发生,因为在一半的缓存被正在复制的数据填满之前,您的二进制文件会被再次使用,您的缓存数据会被再次使用,并且您正在复制的数据会比您经常使用的数据更旧。因此,副本会从缓存中删除,而不是您经常使用的数据。
所以不要清空你的缓冲区和缓存,否则你会减慢你的机器速度。
汤姆汤姆汤姆