서버의 메모리는 약 24GB입니다. 실행하면 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
. 게시한 내용에 따르면 19GB의 여유 RAM이 있음을 보여줍니다. 표시된 23GB는 시스템에서 캐시로 사용되지만 여전히 애플리케이션에서 쉽게 사용할 수 있습니다. 그렇기 때문에 top
메모리가 비어 있다고 표시되는 것입니다.
보다Linuxatemyram.com더 자세한 설명을 위해
답변2
당신은 참조 할 수 있습니다이 질문정확한 여유 메모리를 확인합니다.
기본적으로리눅스가지고있다매우 효율적실행 중인 시스템에서 캐시된 메모리를 해제해야 하는 메모리 관리 프로세스입니다.
그러나 그것에 관해서는캐시된 메모리,리눅스때때로 다음과 같이 결정할 수도 있습니다.캐시된 메모리사용 중이고 필요하므로 메모리 관련 문제가 발생하고 궁극적으로 사용 가능한 메모리를 모두 소모할 수 있습니다. 이에 대응하려면 강제로 할 수 있습니다.리눅스저장된 캐시 메모리를 확보합니다.
즉시 메모리를 확보하려면 다음과 같이 하면 됩니다.
free && sync && echo 3 > /proc/sys/vm/drop_caches && free
편집됨: 이 명령을 cronjob으로 실행할 수도 있습니다.
처럼@mjturner지적했지만 성능 병목 현상이 발생할 수 있으므로 그다지 권장되지 않습니다.