dev.Log
커널파라미터 - 네트워크 버퍼 설정 본문
소켓통신 서버에서 커널파라미터를 튜닝할 일이 있었다.
- net.core.rmem_default: 소켓 생성 시 자동 할당되는 기본 receive buffer 크기.
- rmem_max: 어플리케이션에서 setsockopt(..., SO_RCVBUF, ...) 호출 시 최대 설정 가능한 값.
- net.ipv4.tcp_rmem : TCP 수신 버퍼의 자동 조정 범위를 지정. 커널은 네트워크 상태에 따라 이 범위 안에서 TCP 수신 버퍼 크기를 동적으로 조정
1. net.core.rmem_default
- 설명: 모든 소켓에 기본적으로 적용되는 수신 버퍼(default receive buffer) 크기.
- 단위: 바이트(Byte)
- 기본값 : 219024 (126KB)
- 262144 (256KB)
2. net.core.rmem_max
- 설명: 어플리케이션이 setsockopt() 함수로 설정할 수 있는 최대 수신 버퍼 크기.
- 단위: 바이트(Byte)
- 기본값 예시: 212992
- 당신의 설정: 4194304 = 4 MB
- 적용방법 : /etc/sysctl.conf나 /etc/sysctl.d/*.conf 파일에 추가
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
3. net.ipv4.tcp_rmem
- 설명: TCP 수신 버퍼의 자동 조정 범위를 지정
커널은 네트워크 상태에 따라 이 범위 안에서 TCP 수신 버퍼 크기를 동적으로 조정합니다. - 단위: 바이트(Byte)
- 기본값 예시:
- 4096 = 4 KB → TCP 소켓이 사용할 수 있는 최소 수신 버퍼
- 87380 = 약 85 KB → 소켓 생성 시 기본 수신 버퍼 크기
- 6291456 = 6 MB → 커널이 자동으로 확장할 수 있는 최대 수신 버퍼 크기
- 당신의 설정
- 8192 = 8 KB
- 262144 = 256 KB
- 4194304 = 4 MB
<번외 - TCP 수신 버퍼 자동 조정이란?>
TCP 통신중에 네트워크 상황 (RTT, bandwith)에 따라 리눅스 커널이 수신 버퍼 크기를 동적으로 조정한다.
net.ipv4.tcp_rmem = 4096 87380 6291456
min 4096 (4KB) 커널이 TCP 수신 버퍼에 할당할 수 있는 최소 값
default 87380 (~85KB) 일반적인 상황에서 사용되는 기본 값
max 6291456 (6MB) 커널이 네트워크 상황에 따라 자동 조정할 수 있는 최대 값
Q. 자동 조정이 필요한 이유?
- 네트워크 속도나 지연 시간(RTT)에 따라 더 많은 데이터를 미리 받아놓을 수 있게 하는 게 유리함
- 메모리를 무한정 쓸 수 없기 때문에 min~max 사이에서 제한을 둠 => 성능과 메모리 효율 사이의 균형을 자동으로 맞춤
'BACKEND.* > Server' 카테고리의 다른 글
| SonarQube 실행 오류: vm.max_map_count 값이 뭐길래 서버가 안 뜰까? (0) | 2026.01.02 |
|---|---|
| 리눅스 시작 서비스(init, systemd) 정리 (1) | 2025.12.31 |
| 쿠버네티스는 왜 SWAP을 비활성해야하나? (0) | 2025.04.23 |
| 네트워크매니저 고장 (0) | 2025.02.15 |
| 두 가지 솔루션을 도커로 패키징하기 (0) | 2025.02.15 |
Comments