redis.conf 및 Redis 운영 주의사항

강세준·2023년 1월 25일
0

redis.conf

각종 파라미터 값을 수정할 수 있는 레디스 설정 파일

  • 보안을 위한 파라미터
    • bind [server IP]: bind에 추가된 서버와 통신가능
    • protected-mode : 보안 설정 proctected mode가 yes이고 bind가 설정되어 있지 않으면
      127.0.0.1인 local만 접속이 가능하지만 no인 경우 모든 IP가 접근가능하다
    • requirepass [password] : 접속 시 사용할 패스워드 입력

  • 데이터를 파일러 저장하는 persistence 기능
    • RDB와 AOF는 cache로 사용할때는 사용하지 않고 secondary서버에서의 사용만 고려해볼만 하다
    • save : RDB파일을 저장하는 옵션 ""을 권장
    • stop-writes-on-bgsave-error : save를 사용할때는 no를 권장 해당 옵션이 yes일 경우 RDB 파일 저장이 실패할때 레디스에 write할 수 없게 된다.
    • appendonly : 캐시용은 no / AOF옵션을 사용해야 한다면 yes
    • auto-aof-rewrite-percentage : append Only 특징으로 rewrite를 하지않으면 지속적으로 데이터가 늘어나기 때문에 100(100%)으로 두어 rewrite가 될 수 있게끔 한다.

  • 기타 설정
    • deamonize : no일 경우 foreground로 실행, yes일 경우 background로 실행
    • maxclinet : 최대로 연결 할 수 있는 client의 수 (50000)이하 권장
  • max memory
    • Redis가 인지하는 자기가 사용하는 최대 메모리
    • Redis는 memory allocate(jemalloc)에 의존하고 있음
    • Redis는 정확히 자신이 사용하는 메모리를 인지하지 못함
    • max memory는 가용 메모리의 60~70%로 설정하는 것을 권장한다.
    • max memory를 설정하더라도 이보다 더 사용할 가능성이 존재 -> 메모리 파편화 현상
    • RSS 모니터링를 구축해 Redis가 보고하는 사용 메모리(used Memory)와 실제 사용되는 물리 메모리(RSS)를 비교해볼 필요가 있다.
    • 메모리가 꽉 찼을때 memory-policy에 따라 처리방법이 다른데
      maxmemory-policy volatile-lru는 가장 최근에 사용하지 않는 값을 삭제하는 정책으로 필요 없는 값을 삭제하고 새로운 입력을 받는 것을 통해 캐시 용도로 사용 할 때 권장된다.
RSS(Resident Set Size)

Redis server가 차지하는 Real Memory 사용량(실제 물리 메모리 사용량)

Redis 운영 시 주의사항

메모리 관리

  • physical Memory 이상으로 메모리를 사용하면 swap공간을 사용하여 disk를 사용하게 되어 느려진다.
  • 큰 메모리를 사용하는 instance 하나보다 적은 메모리를 사용하는 instance 여러대가 번거롭더라도 안전하다.
  • 메모리가 부족하면 ziplist를 이용하는 것도 방법이다.
ziplist
  • 속도는 느려지지만 메모리는 더 적게 사용하는 자료구조
  • sorted set의 default 자료구조는 skiplist이다.

명령어

  • Redis의 단순 get/set은 초당 10만 TPS 이상 정도의 성능을 가지고 있다.
  • Redis는 Single thread로 동작하기 때문에 O(N)명령어들을 사용할 때 주의해야 한다.
  • 대표적인 O(N) 명령어 및 대안
    • KEYS -> SCAN 명령어를 사용해 긴 명령을 짧은 여러번의 명령으로 바꿀 수 있다.
    • FLUSHALL, FLUSHDB
    • Delete Collections
    • Get All Collections -> Collection의 일부만 가져오거나 작은 여러개의 Collection으로 나눠 저장한다
참고자료

http://redisgate.kr/redis/server/server_monitor.phphttps://meetup.nhncloud.com/posts/227
https://www.youtube.com/watch?v=mPB2CZiAkKM
https://www.youtube.com/watch?v=mPB2CZiAkKM

profile
데이터를 탐구하는 개발자

0개의 댓글