我们在三台专用服务器上运行带有3个JBoss的Apache Mod_proxy集群。 因为我们需要在这些JBoss服务器之间共享许多文件(我们的应用程序需要读/写的小对象文件),所以我们在Apache节点中使用NFS并将它们作为同一目录安装到每个JBoss节点中。
这两个节点都安装了RHEL 5.4版本,并且在同一个Intranetnetworking中。 我们在每台服务器上都有8G内存。
问题是我们得到的linuxcaching每分钟增加2-3M左右,在重负载的一天(约100-150个在线用户),服务器caching每天会增加到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打开的文件没有closures造成的吗?
他们是否可以使用其他解决scheme来在服务器之间共享文件?
谢谢你的回复。
Linux通常会使用所有可用的内存。 未被应用程序数据使用的内存将被缓冲区和caching用于加速对磁盘和硬件的访问。 你所描述的似乎是正常的行为。 除非您更改内核的swapiness vm参数,否则caching将变得更小以允许应用程序数据增长(如果需要的swapiness 。 Swapiness是:
因此,导出到/ proc / sys / vm / swappiness的swappiness是一个参数,它设置内核在从页面caching中回收页面和交换进程内存之间的平衡。
你可以在这里阅读更多。 通常情况下,默认值是可以的,如果你没有任何进程因为内存不足而被杀死,那么这个caching就不用担心了。