Linux 시스템에서 메모리를 확보하거나 메모리를 관리하는 방법은 무엇입니까?

Linux 시스템에서 메모리를 확보하거나 메모리를 관리하는 방법은 무엇입니까?

두 대의 서버를 실행 중입니다 Ubuntu 12.04(GUI/데스크톱 없음).Canonical의 클라우드 이미지존재하다 Amazon EC2. 하나는 microRAM 613MB이고 다른 하나는 RAM 미디어입니다 3.75GB.

나는 단지opcode 요리사상자 에 설치하면 micro큰 상자에 2048MB 메모리로 초기화된 Java 애플리케이션/SOLR 인덱스가 있습니다.

JAVA_OPTIONS="-server -Xms2048m -Xmx2048m -XX:+UseParallelGC -XX:NewRatio=5"

chef마이크로 박스에서 한동안 실행한 후 새 프로그램을 설치하거나 유사한 프로그램을 시작하려고 하면 작업 을 완료하는 데 여유 메모리가 부족하다는 오류 메시지가 나타납니다 RabbitMQ.Apache2

대형 시스템에서는 메모리가 부족하거나 시스템이 한동안 켜져 있을 때 Java 애플리케이션이 주기적으로 충돌하는 것 같습니다.

free/ 명령을 사용하면 free -m실제로 사용 가능한 메모리가 많지 않다는 것을 알게 되며, 이 시점에서 일반적으로 메모리를 "지우기" 위해 시스템을 재부팅해야 합니다.

특정 시점이 지나면 메모리가 자동으로 해제되거나 "삭제"되어야 하는 것처럼 보입니다. 또는 수동으로 수행해야 하는 경우 메모리를 보다 효율적으로 해제/정리/관리하는 더 좋은 방법이 있을 수 있습니다.

시스템 메모리를 수동으로 확보/지울 수 있는 방법이 있습니까? 메모리를 자동으로 확인/청소할 수 있는 도구가 있나요?

답변1

필요재시작물론 별 의미는 없습니다. 기억이 가득 차 있다면, 그것은 틀림없이 가득 차 있을 것입니다.물건, 프로세스(예: Java 애플리케이션)를 중지하면 해당 메모리가 해제됩니다.

그러나 동일한 애플리케이션을 다시 시작하기 위해 이 작업을 수행해야 하는 경우 다음과 같은 문제가 있습니다.결과적으로 프로세스는 많은 메모리를 소비합니다. 종종, 계속 성장하고 아무것도 해제하지 않는 프로세스는 내부 버그로 인해 메모리 누수가 발생한다고 말할 수 있습니다.

즉, 가장 먼저 해야 할 일은 알아내는 것입니다.구체적으로 어떤 소프트웨어인가요?문제의 원인은 무엇입니까? 이러한 유형의 도구는 top종종 이러한 목적으로 사용됩니다. 당신은 또한 이것에 관심이 있을 수 있습니다플로그.

답변2

캐시를 삭제한다는 성급한 생각에 대해 어디선가 읽은 적이 있지만 직접 시도해 본 적은 없습니다. 자신의 책임 하에 이 작업을 시도해 볼 수 있습니다.

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

기본적으로 여기에서 수행하는 작업은 메모리에 캐시된 디스크 쓰기를 디스크에 커밋하고 캐시된 메모리 부분을 지우는 것입니다. 그러나 시스템이 올바르게 구성되어 있으면 이 명령이 실행되면 구축이 시작됩니다. 그러나 "메모리 부족" 메시지에 대해 일시적인 마음의 평화를 얻을 수 있습니다. "&&" 명령에서 볼 수 있듯이 디스크 커밋이 실패하면 캐시 삭제 명령이 작동하지 않으므로 이는 상당히 안전한 옵션입니다.

관련 정보