Сервер Linux с JBoss, системный кеш увеличивается с каждым днем
Мы запускаем кластер Apache Mod_proxy с 3 JBoss на трех выделенных серверах. Поскольку нам нужно совместно использовать много файлов (небольших объектных файлов, которые наши приложения должны читать / записывать) между этими серверами JBoss, мы используем NFS на узле Apache и монтируем их в каждый узел 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, является параметром, который устанавливает баланс ядра между восстановлением страниц из кэша страниц и выгрузкой памяти процесса.
Вы можете прочитать больше об этом здесь. Обычно по умолчанию все в порядке, и если у вас нет какого-либо процесса, убиваемого из-за нехватки памяти, кешам не о чем беспокоиться.