Почему Ubuntu не освобождает память?


11

Я работаю с apache2 + php и другими приложениями веб-сервера.

У меня есть монитор как сеанс подключения к веб-серверу. Оперативная память заполнена.

Но при отключении сеанса он не освобождает память RAM.

У меня есть монитор через free -m, и он показывает неизданную память, даже когда сессия не подключена.

Есть ли решение?


Будьте осторожны со свободным -m. Первая строка показывает использование памяти, включая буферы и кэши. Вторая строка показывает используемую память за вычетом буферов и кеша, которые являются фактической доступной памятью. Вы также должны попробовать что-то вроде htopдля целей мониторинга. Это гораздо более интуитивно понятно и доступно в официальных репозиториях. Если вам действительно не хватает памяти, дайте нам больше информации, например, о типе веб-приложения, которое вы используете, о количестве используемой оперативной памяти, о том, что используется, и обо всем. Вставьте вывод free -m и все в таком духе.
Джонрайд

3
Нет решения, потому что нет проблемы. Linux использует доступную оперативную память в качестве буфера для файлов.
Запустите CMD

Но вот после команды fire: sudo sync && sudo sysctl -w vm.drop_caches = 3 Это показывает мне, свободная свободная память, а также приложения работают лучше.
Tejaskumar Tank


Я наиболее опытен с VPS-сервером и недавно основал Debian 9.0, отлично работающий с управлением памятью.
Tejaskumar Tank

Ответы:


12

Вы можете освободить неиспользуемую память с помощью этой команды:

sudo sync && sudo sysctl -w vm.drop_caches=3

Эта команда синхронизирует кэшированные данные, а затем записывает параметр ОС во время выполнения, расположенный в / proc / sys / vm / drop_caches . Этот параметр читается ядром один раз, затем освобождает неиспользуемую память.

По сути, ядро ​​резервирует три раздела в кэше, что может увеличить использование памяти:

  • кэш страницы
  • dentries
  • иноды

Запись этого параметра приведет к тому, что ядро ​​удалит из оперативной памяти чистые кэши страниц, зубные копии и inode, что приведет к освобождению этой памяти. Есть три значения, которые могут быть назначены:

  1. vm.drop_caches = 1 бесплатных кэшей страниц.
  2. vm.drop_caches = 2 бесплатных дентри и иноды.
  3. vm.drop_caches = 3 бесплатных кэша страниц, дентрии и иноды.

Важно: после выполнения это вернется в нормальное состояние, что означает снова начать кэширование кэшей страниц, dentries и inode. Используйте его в зависимости от конфигурации вашего сервера и приложения.


1
Можете ли вы объяснить немного подробнее?
AB

Эта команда полезна только в том случае, если еженедельно или ежедневно в конце дня требуется освободить всю неиспользуемую память, а также 3, 2 или 1 каждый с различным назначением. Не пытайтесь сделать это на сервере, загруженном сессией.
Tejaskumar Tank

1
Отредактируйте свой ответ, а не как комментарий.
AB

sudo sync & sudo sysctl -w vm.drop_caches=3
Nyxynyx

1
@GuillermoGarcia Использование bash в Ubuntu 18.04.3. Мне нужно было включить sudoвторой раз. В противном случае я получаю ошибкуsysctl: permission denied on key 'vm.drop_caches'
Nyxynyx
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.