우분투가 메모리를 해제하지 않는 이유는 무엇입니까?


11

apache2 + php 및 기타 웹 서버 앱으로 작업하고 있습니다.

웹 서버에 연결하는 세션으로 모니터가 있습니다. RAM 메모리가 가득 찼습니다.

그러나 세션 연결을 끊을 때 RAM 메모리를 비우지 않습니다.

를 통해 모니터가 있으며 free -m세션이 연결되어 있지 않아도 릴리스되지 않은 메모리가 표시됩니다.

해결책이 있습니까?


free -m에주의하십시오. 첫 번째 줄은 버퍼와 캐시를 포함한 메모리 사용량을 보여줍니다. 두 번째 줄은 사용 된 메모리에 실제 사용 가능한 메모리 인 버퍼와 캐시가 적음을 보여줍니다. 또한 htop모니터링 목적으로 같은 것을 시도해야 합니다. 공식 저장소에서 훨씬 직관적이며 사용 가능합니다. 실제로 메모리가 부족한 경우 실행중인 웹 응용 프로그램의 유형, 보유한 RAM의 양, 사용 된 것 및 모두와 같은 추가 정보를 제공하십시오. free -m의 출력물을 붙여 넣습니다.
Johnride

3
문제가 없기 때문에 해결책이 없습니다. Linux는 사용 가능한 RAM을 파일 버퍼로 사용합니다.
CMD

그러나 fire 명령 후 : sudo sync && sudo sysctl -w vm.drop_caches = 3 사용 가능한 메모리가 충분하고 앱이 더 잘 작동합니다.
Tejaskumar Tank 17


VPS 서버를 가장 많이 사용했으며 최근 메모리 관리와 완벽하게 작동하는 데비안 9.0을 설립했습니다.
Tejaskumar Tank

답변:


12

이 명령을 사용하여 사용하지 않는 메모리를 비울 수 있습니다.

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

이 명령은 캐시 된 데이터를 동기화 한 다음 / proc / sys / vm / drop_caches 에있는 런타임에 OS 매개 변수를 씁니다 . 이 매개 변수는 커널에서 한 번 읽은 다음 사용하지 않는 메모리를 비 웁니다.

기본적으로 커널은 3 개의 섹션을 캐시에 예약하여 메모리 사용량을 늘릴 수 있습니다.

  • pagecache
  • 덴 트리
  • 아이 노드

이 매개 변수에 쓰면 커널이 RAM에서 클린 페이지 캐시, 덴 트리 및 inode를 삭제하여 해당 메모리를 사용할 수있게됩니다. 할당 할 수있는 세 가지 값이 있습니다.

  1. vm.drop_caches = 1 무료 페이지 캐시.
  2. vm.drop_caches = 2 빈 공간 및 아이 노드.
  3. vm.drop_caches = 3 개의 무료 페이지 캐시, 덴 트리 및 inode.

중요 : 실행 후에는 페이지 캐시, 덴 트리 및 inode 캐싱 시작을 의미하는 정상 상태로 돌아갑니다. 서버 구성 및 응용 프로그램에 따라 사용하십시오.


1
좀 더 자세히 설명해 주시겠습니까?
AB

이 명령은 매주 또는 매일 종료일에 사용하지 않는 모든 메모리 (각각 다른 목적으로 3 또는 2 또는 1)를 해제하려고 할 때만 유용합니다. 세션로드 서버에서는 이것을 시도하지 마십시오.
Tejaskumar Tank

1
의견이 아닌 답변을 수정 하십시오.
AB

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

1
@GuillermoGarcia 우분투 18.04.3에서 bash 사용 . 나는 sudo두 번째 시간 을 포함시켜야 했다. 그렇지 않으면 오류가 발생합니다sysctl: permission denied on key 'vm.drop_caches'
Nyxynyx
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.