Dlaczego ubuntu nie wydaje się zwalniać pamięci?


11

Pracuję z apache2 + php i innymi aplikacjami serwera WWW.

Mam monitor jako sesję łączącą się z serwerem WWW. Pamięć RAM jest pełna.

Ale po odłączeniu sesji nie zwalnia pamięci RAM.

Mam monitor za pośrednictwem free -mi pokazuje niewydaną pamięć nawet bez podłączonej sesji.

Czy jest jakieś rozwiązanie?


Uważaj z free -m. Pierwszy wiersz pokazuje użycie pamięci, w tym buforów i pamięci podręcznych. Drugi wiersz pokazuje zużytą pamięć, pomniejszoną o bufory i pamięć podręczną, czyli rzeczywistą dostępną pamięć. Powinieneś także spróbować czegoś takiego htopdo celów monitorowania. Jest o wiele bardziej intuicyjny i dostępny w oficjalnych repozytoriach. Jeśli naprawdę brakuje Ci pamięci, przekaż nam więcej informacji, takich jak rodzaj uruchomionej aplikacji internetowej, ilość posiadanej pamięci RAM, używane i wszystko inne. Wklej wyjście free -m i tego typu rzeczy.
Johnride,

3
Nie ma rozwiązania, ponieważ nie ma problemu. Linux używa dostępnej pamięci RAM jako bufora plików.
Uruchom CMD

Ale tutaj po komendzie ognia: sudo sync && sudo sysctl -w vm.drop_caches = 3 Pokazuje mi odpowiednią wolną dostępną pamięć, a także aplikacje działają lepiej.
Tejaskumar Tank


Jestem najbardziej doświadczony z serwerem VPS i niedawno założyłem debian 9.0, doskonale współpracujący z zarządzaniem pamięcią.
Tejaskumar Tank

Odpowiedzi:


12

Możesz zwolnić nieużywaną pamięć za pomocą tego polecenia:

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

To polecenie synchronizuje buforowane dane, a następnie zapisuje parametr systemu operacyjnego w czasie wykonywania, znajdujący się w / proc / sys / vm / drop_caches . Ten parametr jest odczytywany przez jądro jeden raz, a następnie zwalnia nieużywaną pamięć.

Zasadniczo jądro rezerwuje trzy sekcje w pamięci podręcznej, które mogą zwiększyć wykorzystanie pamięci:

  • pamięć podręczna
  • dentries
  • i-węzły

Zapisanie tego parametru spowoduje, że jądro usunie czyste pamięci podręczne, dentries i i-węzły z pamięci RAM, co spowoduje zwolnienie pamięci. Istnieją trzy wartości, które można przypisać:

  1. vm.drop_caches = 1 darmowy pagecache.
  2. vm.drop_caches = 2 wolne dentries i i-węzły.
  3. vm.drop_caches = 3 bezpłatne pagecache, dentries i i-węzły.

Ważne: po wykonaniu powróci do normalnego stanu, co oznacza ponowne buforowanie pagecache, dentries i i-węzłów. Użyj go w zależności od konfiguracji serwera i aplikacji.


1
Czy możesz wyjaśnić trochę więcej szczegółów?
AB

To polecenie jest przydatne tylko wtedy, gdy co tydzień lub codziennie na koniec dnia chcesz zwolnić całą nieużywaną pamięć, również 3, 2 lub 1, każda w innym celu. Nie próbuj tego na serwerze załadowanym sesją.
Tejaskumar Tank

1
Edytuj swoją odpowiedź, a nie jako komentarz.
AB

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

1
@GuillermoGarcia Korzystanie z bash w Ubuntu 18.04.3. Musiałem dołączyć sudopo raz drugi. W przeciwnym razie sysctl: permission denied on key 'vm.drop_caches'
pojawia się
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.