728x90
※ Linux: Kernel MemoryParameters.
안녕하세요. 듀스트림입니다.
오늘은 리눅스에서 시스템 레벨의 메모리 관리 파라미터에 대한 내용입니다.
본 포스팅은 PostgreSQL 등 DBMS 서버 관점에서 작성했습니다.
1. vm.overcommit_memory
• 설명
- 프로세스의 메모리 할당(overcommit) 정책을 정하는 핵심 커널 파라미터
- 0: Heuristic, 커널이 추정하여 오버커밋 결정(기본값)
- 1: 항상 오버커밋 허용
- 2: 물리 메모리+스왑, overcommit_ratio 기준으로 오버커밋 한계 설정, 엄격 제한
• 확인 방법
cat /proc/sys/vm/overcommit_memory
# or
sysctl -n vm.overcommit_memory
• 설정 방법
vi /etc/sysctl.d/60-postgresql.conf
# 아래 내용 추가
vm.overcommit_memory = 2
# 변경사항 적용
sudo sysctl -p /etc/sysctl.d/60-postgresql.conf
# or
sudo sysctl --system
• PostgreSQL 서버 권장 설정
- 2: 물리 메모리+스왑, overcommit_ratio 기준으로 오버커밋 한계 설정, 엄격 제한
- 엄격한 오버커밋 제한을 통해 PostgreSQL postmaster 프로세스가 Out-Of-Memory(OOM) Killer 대상이 되는 상황을 줄이고 DB 서버의 예기치 않은 다운/장애를 예방할 수 있습니다.
2. vm.overcommit_ratio
• 설명
- vm.overcommit_memory=2인 경우 최대 커밋 가능한 메모리를 Swap + (RAM × overcommit_ratio %)로 산정
• 확인 방법
cat /proc/sys/vm/overcommit_ratio
• 설정 방법
위 파라미터와 동일한 파일에 아래 내용 추가 후 변경사항 적용
vm.overcommit_ratio = 80
• PostgreSQL 서버 권장 설정
- 80
- RAM의 최소 20%는 커널·OS 캐시 용도로 확보하여 PostgreSQL의 메모리 커밋 압박을 완화하여 안정성을 높입니다.
- 커뮤니티에서도 80~90% 범위 설정을 권장합니다. (워크로드 규모·스왑 크기에 따라 overcommit_ratio를 ±5% 범위에서 미세 조정)
3. vm.panic_on_oom
• 설명
- 시스템 메모리 부족(OOM) 상황에서 커널의 동작 방식 지정
- 0: OOM-Killer가 문제 프로세스만 종료(기본)
- 1: OOM시 조건부 패닉(특정 조건에서만)
- 2: 즉시 시스템 패닉(전체 서버 다운)
• 확인 방법
cat /proc/sys/vm/panic_on_oom
• 설정 방법
위 파라미터와 동일한 파일에 아래 내용 추가 후 변경사항 적용
vm.panic_on_oom = 0
• PostgreSQL 서버 권장 설정
- 0: OOM-Killer가 문제 프로세스만 종료(기본)
- 메모리 부족이 발생해도 DB 프로세스(postmaster 등)만 종료되고 OS와 나머지 서비스는 계속 동작합니다.
서버 전체 장애 및 불필요한 재부팅, 서비스 중단을 예방할 수 있습니다.
- 메모리 부족이 발생해도 DB 프로세스(postmaster 등)만 종료되고 OS와 나머지 서비스는 계속 동작합니다.
4. vm.oom_kill_allocating_task
• 설명
- OOM 시 어느 프로세스를 kill할지 선정하는 정책 지정
- 0: 커널이 가장 적합한(메모리 사용량, 중요도 등) 프로세스를 선정해 종료
- 1: 메모리 할당을 시도하다 실패한(가해) 프로세스를 즉시 종료
• 확인 방법
cat /proc/sys/vm/oom_kill_allocating_task
• 설정 방법
위 파라미터와 동일한 파일에 아래 내용 추가 후 변경사항 적용
vm.oom_kill_allocating_task = 0
• PostgreSQL 서버 권장 설정
- 0: 커널이 가장 적합한(메모리 사용량, 중요도 등) 프로세스를 선정해 종료
- 백그라운드 대용량 작업(정렬 등)처럼 메모리 사용량이 일시적으로 큰 워커 프로세스가 우선적으로 종료될 확률이 높아집니다. postmaster 등 핵심 프로세스를 보호하여 DB 서비스의 가용성과 지속성을 높일 수 있습니다
+ 임시 변경 방법 (재부팅하면 원래 설정 값으로 돌아옵니다.)
echo 80 | sudo tee /proc/sys/vm/overcommit_ratio
++ 적용 전후 점검 스크립트
for k in overcommit_memory overcommit_ratio panic_on_oom oom_kill_allocating_task; do
printf '%-30s %s\n' $k $(cat /proc/sys/vm/$k)
done
오늘은 여기까지~
728x90
'Linux' 카테고리의 다른 글
| Linux: 터미널 세션 기록 (1) | 2025.11.14 |
|---|---|
| Linux: rpm 다운로드 방법 (1) | 2025.08.04 |
| Linux: 기본 디렉터리 구조 (2) | 2025.07.22 |
| Linux: OpenSSH 사용법 (0) | 2025.02.24 |
| Linux: chage 사용법 (0) | 2025.02.23 |