не могу найти то, что использовало всю память

не могу найти то, что использовало всю память

На сервере около 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как было отмечено, это не очень рекомендуется, поскольку может привести к снижению производительности.

Связанный контент