На сервере около 24 ГБ памяти. Запустив free -g
я обнаружил, что память израсходована
total used free shared buffers cached
Mem: 23 23 0 0 0 18
-/+ buffers/cache: 4 19
Swap: 56 2 53
top
Затем я провел небольшое исследование того, что к тому времени израсходовало всю эту память M
. Но, похоже, память в %MEM
колонке довольно свободна.
Что можно сделать, чтобы освободить память? Это сервер для вычислений, поэтому лучше не перезагружать компьютер.
решение1
Вы неправильно интерпретируете вывод free
. То, что вы разместили, показывает, что у вас 19 ГБ свободной оперативной памяти. 23 ГБ, которые вы видите, используются системой в качестве кэша, но по-прежнему легко доступны для приложений. Вот почему top
память отображается как свободная..
ВидетьLinuxatemyram.comдля более подробного объяснения
решение2
Вы можете обратиться кэтот вопросдля определения точного объема свободной памяти.
По умолчаниюлинуксимееточень эффективныйпроцесс управления памятью, который должен освобождать всю кэшированную память на машине, на которой он запущен.
Однако когда дело доходит докэшированная память,линуксможет иногда решить, чтокэшированная памятьиспользуется и требуется, что может привести к проблемам с памятью и в конечном итоге израсходовать свободную память. Чтобы противостоять этому, вы можете заставитьлинуксчтобы освободить всю сохраненную кэшированную память.
Чтобы немедленно освободить память, вы можете просто сделать это,
free && sync && echo 3 > /proc/sys/vm/drop_caches && free
РЕДАКТИРОВАНО: Эту команду также можно запустить как cronjob.
Как@mjturnerкак было отмечено, это не очень рекомендуется, поскольку может привести к снижению производительности.