유휴 출력을 기반으로 RAM을 업그레이드해야 하는 경우

유휴 출력을 기반으로 RAM을 업그레이드해야 하는 경우

12GB의 물리적 메모리(RAM) 할당을 사용하여 Linux 서버에서 실행되는 Java 애플리케이션이 있고 아래와 같이 시간이 지남에 따라 정상적인 사용률이 표시됩니다.

sys> free -h
              total        used        free      shared  buff/cache   available
Mem:            11G        7.8G        1.6G        9.0M        2.2G        3.5G
Swap:            0B          0B          0B

최근 애플리케이션의 로드를 늘리면 RAM 사용률이 거의 가득 차고 여유 공간이 거의 없어 약간의 속도 저하가 발생할 수 있지만 애플리케이션은 여전히 ​​잘 작동하는 것을 볼 수 있습니다.

sys> free -h
              total        used        free      shared  buff/cache   available
Mem:            11G         11G        134M         17M        411M        240M
Swap:            0B          0B          0B
sys> free -h
              total        used        free      shared  buff/cache   available
Mem:            11G         11G        145M         25M        373M        204M
Swap:            0B          0B          0B

나는 언급했다https://www.linuxatemyram.com/다음 사항이 제안됩니다.

경고 표시조사해야 할 실제 메모리 부족 상황:

  • 사용 가능한 메모리(또는 "사용 가능한 + 버퍼/캐시")가 0에 가깝습니다.
  • 사용된 스왑이 증가하거나 변동합니다.
  • dmesg | grep oom-killer는 OutOfMemory-killer의 작동 상태를 표시합니다.

위의 사항을 보면 애플리케이션 수준에서는 OOM 문제가 보이지 않으며 스와핑도 비활성화되어 있습니다. 따라서 이 두 가지 사항은 무시됩니다. 저를 괴롭히는 것은 사용 가능한 메모리가 0보다 작다는 것입니다. 명확히 해야 합니다.

질문:

available이 0에 가까우면 시스템 충돌이 발생합니까?

사용 가능한 메모리가 줄어들면 RAM을 업그레이드해야 한다는 뜻인가요?

RAM 메모리는 어떤 기준으로 할당/증가해야 합니까?

RAM 메모리 할당을 위해 따라야 할 공식적인 권장 사항/지침이 있습니까?

답변1

available이 0에 가까우면 시스템 충돌이 발생합니까?

널리 사용되는 최신 운영 체제는 이러한 상황을 처리할 수 있으므로 시스템이 너무 느려져서 실제로 사용할 수 없을지라도 시스템이 정상적으로 충돌하지는 않습니다.

사용 가능한 메모리가 줄어들면 RAM을 업그레이드해야 한다는 뜻인가요?

사용 가능한 RAM이 실제로 너무 낮아 프로세스가 RAM에서 제거될 수 있습니다. 아마도 메모리를 더 추가해야 할 것입니다.

RAM 메모리는 어떤 기준으로 할당/증가해야 합니까?

성능이 영향을 받거나(즉, 과도한 스왑 사용량으로 인해 디스크 스래싱이 발생하는 경우) 작업을 완료하는 데 필요한 RAM이 부족하여 작업을 완료할 수 없는 경우입니다.

RAM 메모리 할당을 위해 따라야 할 공식적인 권장 사항/지침이 있습니까?

내가 아는 한, 아니오. 사람마다 RAM 요구 사항이 다릅니다. 2021년 최신 운영 체제, 데스크톱 환경, 웹 브라우저에 관해 이야기한다면 4GB RAM이 절대적으로 최소이지만 8GB 미만의 RAM을 사용하는 것은 권장하지 않습니다. 궁극적으로 이는 작업 흐름에 따라 다르며 아무도 모릅니다. 일부 분야에서는 사람들이 이미 128GB RAM을 갖춘 워크스테이션(비디오 및 이미지 편집, 3D 렌더링, 수학/화학/물리/엔지니어링 컴퓨팅, 인공 지능)을 보유하고 있습니다.

답변2

available이 0에 가까우면 시스템 충돌이 발생합니까?

내 서버 중 하나에서 테스트할 때 아래와 같이 로드한 메모리가 거의 가득 찼습니다.

sys> free -h
              total        used        free      shared  buff/cache   available
Mem:            11G         11G        135M         25M        187M         45M
Swap:            0B          0B          0B

내 앱만(더 많은 메모리 소비) 종료되는 것을 볼 수 있습니다.메모리 부족 킬러커널 로그에서 참조 가능

dmesg -e

[355623.918401] [21805] 553000 21805 69 21 2 0 0 rm
[355623.921381] Out of memory: Kill process 11465 (java) score 205 or sacrifice child
[355623.925379] Killed process 11465 (java), UID 553000, total-vm:6372028kB, anon-rss:2485580kB, file-rss:0kB, shmem-rss:0kB

https://www.kernel.org/doc/gorman/html/understand/understand016.html

Out Of Memory Killer 또는 OOM Killer는 시스템 메모리가 심각하게 부족할 때 Linux 커널에서 사용하는 프로세스입니다. 이는 Linux 커널이 프로세스에 너무 많은 메모리를 할당하기 때문에 발생합니다. ...이는 실행 중인 프로세스에 물리적으로 사용 가능한 것보다 더 많은 메모리가 필요하다는 의미입니다.

관련 정보