무료 출력을 기반으로 RAM을 업그레이드하는 경우

무료 출력을 기반으로 RAM을 업그레이드하는 경우

물리적 메모리(RAM)가 12GB로 할당된 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보다 작다는 것이었습니다.

질문:

  1. available이 0에 가까울 경우 시스템 충돌이 발생합니까?
  2. 사용 가능한 메모리가 줄어들면 RAM을 업그레이드해야 한다는 의미입니까?
  3. RAM 메모리는 어떤 기준으로 할당/증가해야 합니까?
  4. RAM 메모리 할당을 위해 따라야 하는 공식적인 권장 사항/지침이 있습니까?

답변1

내 질문 중 하나에 대한 답변을 얻을 수 있습니다.

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 커널이 프로세스에 메모리를 과도하게 할당했기 때문에 발생합니다. ... 이는 실행 중인 프로세스에 물리적으로 사용 가능한 것보다 더 많은 메모리가 필요함을 의미합니다.

관련 정보