Чому, схоже, ubuntu не звільняє пам'ять?


11

Я працюю з apache2 + php та іншими програмами веб-сервера.

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

Але при відключенні сеансу це не звільняє оперативну пам'ять.

У мене є монітор через free -m, і він показує невивільнену пам'ять, навіть якщо зараз не підключений сеанс.

Чи є рішення?


Будьте обережні з вільним -м. Перший рядок показує використання пам'яті, включаючи буфери та кеші. Другий рядок показує використану пам'ять за винятком буферів та кешу, що є фактично наявною пам'яттю. Ви також повинні спробувати щось на зразок htopмоніторингу. Він набагато інтуїтивніший і доступний в офіційних репортажах. Якщо у вас дійсно не вистачає пам’яті, дайте нам більше інформації, наприклад, тип веб-програми, яку ви працюєте, кількість оперативної пам’яті, що використовується, і все. Вставте висновок free -m та подібні речі.
Johnride

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 . Цей параметр прочитає ядро ​​один раз, після чого звільнить невикористану пам'ять.

В основному ядро ​​зберігає три розділи в кеші, що може збільшити використання пам'яті:

  • pagecache
  • стоматологи
  • вузли

Якщо записати цей параметр, ядро ​​випаде з оперативної пам’яті чистими кешами сторінок, зубними протезами та індексами, внаслідок чого пам'ять стане вільною. Можна призначити три значення:

  1. vm.drop_caches = 1 безкоштовний кеш-сторінок.
  2. vm.drop_caches = 2 вільних зубних стоматологів та вузолів.
  3. vm.drop_caches = 3 вільних сховища сторінок, зубних стоматологів та індексів.

Важливо: Після виконання цього виконання повернеться до нормального стану, що означає знову запустити кешування сторінок, стоматологів та індексів. Використовуйте його залежно від конфігурації вашого сервера та програми.


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.