· 톺아보기

지그재그도 클리앙 처럼 redis 문제터졌었나보네요

뚜찌-zXie ·

조회 3,730 · 공감 0 · 댓글 10



F-QnIKca0AAnBqi.jpg

F-QnIKcaUAAFSWO.jpg

예전 클리앙 공지에

그 redis 인덱스 부하걸려서 그랬다고 했었나요?

지그재그도 그런가봅니다.


흔히 발생하는 오류/버그인가 봐요 ㅎㄷㄷ

출처 : https://x.com/day_off_daying/status/1721543983430873526?s=20

댓글 10

  1. 사탕수수 ·
    쇼핑몰에 저런 문제 터지면 ㄷㄷㄷ 서비스 닫고 점검 해야하지 않을까요
  2. 뚜찌-zXie ·
    @사탕수수님 클리앙도 서비스 닫고 점검하고 다시 개장했었죠.. 전 버그가 신박해서 원인 찾기 힘들줄 알았어요
  3. mairoo ·
    근데 어떻게 다른 사람 아이디로 로그인이 될까요. 보통 서버가 뻗으면 토큰 갱신이 안 되거나 해서 로그인이 아예 안 되야 하는 거 아닌가요;
  4. 뚜찌-zXie · · 공감 1
    @mairoo님 에전 클리앙 공지 찾아보니...
    —————————————————— 2.23 21:30 추가

    정확한 원인이 파악되었습니다.

    저희가 서버에서 세션을 저장하고 있는 redis(일종의 메모리db)가 한계수치 이상의 부하를 받으면 인덱스가 깨지는 현상이 발생한다고 합니다.

    국내 대형 쇼핑몰 두곳에서 최근 유사한 증상이 있어 관련자들에게 문의해본 바 저희와 같은 증상이었습니다.

    이번의 여러 조치 중 redis 통신 최적화 작업도 진행하였기에 다시 재발되지 않을 것입니다.

    더 줄일 수 있는 요소가 있으므로 추가적인 작업을 진행할 예정입니다

    https://www.clien.net/service/board/annonce/17922106CLIEN

    라고 하네요..ㅎㄷㄷ
  5. sky9834 ·
    저도 바로 탈퇴
  6. 구름빵 ·
    지난 3월에 openai에서 유사한 버그가 발생했었는 데, 당시에는 redis 서버의 문제가 아니라, asyncio를 사용하는 redis client 개발용 라이브러리 문제였습니다. openai의 경우에는 redis-py라고 하는 오픈소스 파이썬 라이브러리 였다고 했어요. async 통신용 큐에 push된 내용이 레디스에서 pop을 하기 전에, 라이브러리가 해당 큐를 커넥션 풀로 회수하는 바람에 다른 연결용 큐로 사용되면서 이전 푸쉬데이터가 전달되는 버그였었죠. 레디스 메모리내에 데이터가 꽉 차다보니 키를 삭제해서 데이터 전달을 받지 못하게 되면 유사한 현상이 나타났을 것 같네요.
    openai는 레디스에 연락해서 패치했다고 했는 데, openai나 되니까 연락해서 바로 해주지 않았을 까 싶네요.
  7. mairoo ·
    댓글 이미지
    @구름빵님
    redis가 오픈소스이기는 해도 전세계적으로 그렇게 널리 쓰이는데 왜 우리나라 일부 사이트에서만 이런 문제가 발생할까 의문이 들었는데 말씀하신 부분이 가장 합리적인 의심 같네요. redis 앞에 버퍼, 캐시 역할하는 것들이 부하가 차면 저장된 것들을 오류로 반환하는 거요.

    그냥 무턱대고 redis 인덱스가 깨진다고 하면 불안해서 어떻게 쓰나 싶어서 클리앙 글도 검색해보고 했는데 Quando님 의견을 놓고 대입해봐도 이렇게 되면 이해가 되기도 하구요.
    https://www.clien.net/service/board/park/17923951CLIEN

    캡처해서 올렸는데 이미지가 너무 안 보이네요....
  8. 구름빵 ·
    @mairoo님 openai 설명을 보면, 이 문제가 async io를 할 때만 나오는 것 같습니다. sync library 만 사용해 봤는 데, 이런 문제를 본 적이 없거든요. asyncio를 기본 내장하는 프레임웍 라이브러리가 나오면서 빌생한 것은 아닌가 싶기도 합니다.
  9. mairoo ·
    @구름빵님
    댓글 통해서 많이 배워갑니다. 클리앙이 스프링/자바 쓴다고 했는데 redis-py 파이썬 라이브러리 사용은 안 했을 것 같고 spring-data-redis 패키지 썼을테고 아마 성능 최적화를 위해 @Async 적용한 것으로 보이네요.

    https://velog.io/@gale4739/Spring-Boot-%EC%84%B1%EB%8A%A5-%EA%B0%9C%EC%84%A0-1-2.-Redis-%EB%8F%99%EC%8B%9C-%EC%A0%91%EC%86%8D-%EC%84%B1%EB%8A%A5-%EA%B0%9C%EC%84%A0Feat.-Async

    저도 동기적으로만 써서 클리앙 대비해서는 트래픽은 없는 수준이고 그래서 이슈가 없었는지 모르겠습니다. 좋은 댓글 감사합니다.
  10. 구름빵 ·
    @mairoo님 도움이 되셨다니 기쁩니다. 좋은 하루 되세요.

모두의공원 최근 글

모두의공원 목록 더 보기