Мы запускаем кластер Apache Mod_proxy с 3 JBoss на трех выделенных серверах. Поскольку нам нужно совместно использовать много файлов (небольших объектных файлов, которые наши приложения должны читать / записывать) между этими серверами JBoss, мы используем NFS в узле Apache и монтируем их в каждый узел JBoss в одном каталоге.
На обоих узлах установлена версия RHEL 5.4 и они находятся в одной интранет-сети. У нас есть 8 ГБ оперативной памяти на каждом сервере.
Проблема в том, что мы увеличили кеш Linux примерно на 2-3 МБ в минуту, в день большой нагрузки (около 100-150 онлайн-пользователей) кеш сервера будет увеличиваться примерно до 3-4 ГБ каждый день.
После запуска этого чистого кода:
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 не закрыты?
Это другие решения, которые мы можем использовать для обмена файлами между серверами?
Спасибо за любой ответ.
Linux обычно использует всю доступную память. Память, которая не используется данными приложения, затем будет использоваться буферами и кешами для ускорения доступа к дискам и оборудованию. То, что вы описываете, кажется нормальным поведением. Кеши станут меньше, чтобы данные приложения могли при необходимости расти, если вы не измените swapiness
vm параметр ядра. Swapiness - это:
Итак ... swappiness, который экспортируется в / proc / sys / vm / swappiness, - это параметр, который устанавливает баланс ядра между восстановлением страниц из кеша страниц и заменой памяти процесса.
Вы можете прочитать об этом подробнее Вот. Обычно по умолчанию все в порядке, и если у вас не происходит прерывания какого-либо процесса из-за нехватки памяти, о кэшах не о чем беспокоиться.