모든 메모리를 사용한 것을 찾을 수 없습니다

모든 메모리를 사용한 것을 찾을 수 없습니다

서버의 메모리는 약 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지적했지만 성능 병목 현상이 발생할 수 있으므로 그다지 권장되지 않습니다.

관련 정보