Postgresql, EPAS/파라미터 튜닝

PostgreSQL 설치 시 OS 파라미터 튜닝

havy 2025. 6. 17. 09:42

## 예시 (100GB 메모리 기준)
# 1. 공유 메모리 및 세마포어
kernel.shmmax = 107374182400             # 100 * 1024^3 = 100GB
kernel.shmall = 26214400                 # 100GB / 4096 (페이지 크기 = 4KB)
kernel.sem = 250 32000 100 128
 
# 2. OOPS 발생 시 커널 패닉 유도 → 자동 재부팅 감지 가능
kernel.panic_on_oops = 1
 
# 3. 네트워크 버퍼 튜닝 (DB와 클라이언트 간 처리량 향상)
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
 
# 4. IP 패킷의 source validation 비활성화 (HA 구성 등에서 유용)
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
 
# 5. TCP 포트 범위 확장 (DB connection 수용력 증가)
net.ipv4.ip_local_port_range = 9000 65500
 
# 6. 메모리 오버커밋 정책 (DB shared memory 운영에 중요)
vm.overcommit_memory = 2
vm.overcommit_ratio = 80
 
# 7. 스와핑 최소화
vm.swappiness = 1
vm.force_cgroup_v2_swappiness = 1        # cgroup v2 환경에서의 swappiness 제어
 
# 8. listen() 큐 사이즈 증가 (connection backlog 개선)
net.core.somaxconn = 65535
 
# 9. mmap 가능한 최대 메모리 영역 수 제한 (ELK, 대용량 Shared Memory 대응)
vm.max_map_count = 262144
 
# 10. TCP timestamp 비활성화 (성능 및 보안 목적)
net.ipv4.tcp_timestamps = 0
 
# 11. 파일 디스크립터 전체 제한 (ulimit과 별도로 시스템 전체 제한) - 오라클 기준 적용
fs.file-max = 6815744


##ulimit 설정 (/etc/security/limits.conf)

enterprisedb     soft    nofile  65536
enterprisedb     hard    nofile  65536
enterprisedb     soft    nproc   65536
enterprisedb     hard    nproc   65536


##Transparent Hugepage 비활성화 (부팅 시 적용) - RHEL/Ubuntu 공통
cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag
 
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

cat /sys/kernel/mm/transparent_hugepage/enabled
cat /sys/kernel/mm/transparent_hugepage/defrag

##I/O 스케줄러 설정
# HDD 예시: deadline
echo deadline > /sys/block/<Device name. ex)sda1>/queue/scheduler
 
# SSD 예시: none 또는 noop
echo none > /sys/block/<Device name. ex)sda1>/queue/scheduler

'Postgresql, EPAS > 파라미터 튜닝' 카테고리의 다른 글

pg_hba.conf  (0) 2025.06.17