Open files 확인
maxclients
- 레디스 프로세스에서 받아들일 수 있는 최대 클라이언트의 개수
- 기본 값 : 10,000
- 서버의 파일 디스크럽터 수에 영향을 받는다
현재 서버의 파일 디스크럽터 수 확인 커맨드
해당 설정을 수정하는 방법
- /etc/security/limits.conf
THP 비활성화
리눅스는 메모리를 페이지 단위로 관리하며, 기본 페이지는 4096 바이트(4KB)로 고정돼 있다.
메모리 크기가 커질수록 페이지를 관리하는 테이블인 TLB의 크기도 커져
메모리를 사용할 때 오버헤드가 발생하는 이슈로 인해 페이지를 크게 만든 뒤 자동으로 관리하는
THP(transparent huge page) 기능이 도입됐다.
하지만, 레디스와 같은 데이터베이스 애플리케이션에서는 오히려 이 기능을 사용할 때 퍼포먼스 떨어지고 레이턴시가 올라가는 현상이 발생한다
- $ echo never > /sys/kernel/mm/transparent_hugepage/enabled
- Or
- /etc/rc.local 파일 수정
vm.overcommit_memory 변경
레디스는 디스크에 파일을 저장할 때 fork()를 이용해 백그라운드 프로세스를 만드는데,
이때 COW(copy on write)라는 메커니즘이 동작
COW(copy on write) 메커니즘
-부모 프로세스와 자식 프로세스가 동일한 메모리 페이지를 공유하다가
-레디스의 데이터가 변경될 때마다 메모리 페이지를 복사
위의 메커니즘 영향으로
레디스 프로세스가 실행되는 도중 메모리를 순간적으로 초과해 할당해야 하는 상황이 발생할 수 있으며,
이를 위해 vm.overcommit_memory를 1로 설정
somaxconn, syn_backlog 설정 변경
tcp-backlog
- 레디스 인스턴스가 클라이언트와 통신할 때 사용하는 tcp backlog 큐의 크기를 지정
- 기본 값 : 511
- 서버의 somaxconn(socket max connection)과 syn_backlog 값보다 클 수 없다
- 해당 값 설정 위치 : /etc/sysctl.conf
- net.ipv4.tcp_max_syn_backlog = 1024
- net.core.somaxconn = 1024