我们在三台专用服务器上运行带有 3 个 JBoss 的 Apache Mod_proxy 集群。由于我们需要在这些 JBoss 服务器之间共享许多文件(我们的应用程序需要读取/写入的小对象文件),因此我们在 Apache 节点中使用 NFS 并将它们作为同一目录安装到每个 JBoss 节点中。
两个节点都安装了 RHEL 5.4 版本,并且位于同一个内联网中。每台服务器都有 8G RAM。
问题是我们的 Linux 缓存每分钟增加约 2-3M,在高负载日(约 100-150 个在线用户)服务器缓存每天将增加到约 3-4G。
运行这些干净的代码后:
sync
echo 3 > /proc/sys/vm/drop_caches
它将恢复到正常水平:
total used free shared buffers cached
Mem: 8173504 589772 7583732 0 87444 72100
-/+ buffers/cache: 430228 7743276
Swap: 5799928 0 5799928
我们想知道这些都是由于JBoss打开的文件没有关闭而导致的吗?
我们可以使用其他解决方案在服务器之间共享文件吗?
谢谢您的回复。
答案1
Linux 通常会使用所有可用内存。应用程序数据未使用的内存随后将被缓冲区和缓存使用,以加快对磁盘和硬件的访问。您所描述的似乎是正常行为。除非您更改swapiness
内核的 vm 参数,否则缓存将变小以允许应用程序数据在需要时增长。Swapiness 是:
所以... swappiness 被导出到 /proc/sys/vm/swappiness,它是一个参数,用于设置内核在从页面缓存回收页面和换出进程内存之间的平衡。
您可以阅读更多相关信息这里。通常默认就可以了,并且如果您没有任何进程因为内存不足而被终止,那么缓存就无需担心。