새소식

반응형
Redis

[Redis] Redis 환경 구성(서버 설정 변경)

  • -
반응형

Open files 확인 

maxclients 

  • 레디스 프로세스에서 받아들일 수 있는 최대 클라이언트의 개수 
  • 기본 값 : 10,000
  • 서버의 파일 디스크럽터 수에 영향을 받는다 

현재 서버의 파일 디스크럽터 수 확인 커맨드 

  • $ ulimit -a | grep open 

해당 설정을 수정하는 방법 

  • /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로 설정

  • /etc/sysctl.conf 파일에 설정 

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

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.