ElastiCache로 Memcached를 운영하고 있습니다. 응답 속도가 튀어서 보니까 Freeable Memory…

ElastiCache로 Memcached를 운영하고 있습니다.

응답 속도가 튀어서 보니까 Freeable Memory Bytes가 2gb 정도인데 Swap Usage와 Evictions가 있네요. (Free가 4gb 수준인 노드는 그렇지 않습니다)

Key 하나에 저장하는 메모리는 정말 작은 수준이라 set operation 하나 하나가 Eviction을 유발할거라고는 생각되지 않습니다. 이 상황을 어떻게 받아들여야 할까요? 고수분들의 도움 부탁드립니다. ㅠㅠ

10 thoughts on “ElastiCache로 Memcached를 운영하고 있습니다. 응답 속도가 튀어서 보니까 Freeable Memory…

  1. expiration 은 사용하시는건가요? 아니면, 데이터가 몰린 특정 시점에 데이터가 eviction 된건 아닐까 싶기도 하구요. 아니면, memcached 특성상, 데이터 사이즈의 validation 이 심하면, 메모리를 좀 더 사용할 수도 있을것 같은데요. 음…

  2. expiration이 (이게 보통 서비스에서 짧은건지 긴건지는 모르겠는데) 길진 않고요. 반나절이에요. “데이터가 몰려서 eviction 발생”과 “expired 데이터가 날아가서 free가 늘어남”이 굉장히 빠르게 지속적으로 반복되면서 이렇게 된걸까요?..

  3. memcached 같은 경우에 청크(디폴트 1MB) 단위로 할당을 받는데요. 이게 97bytes부터 시작해서 기본 1.25배 단위로 청크를 쓰게 됩니다. 즉, 97바이트 짜리는 한 청크로 들어가지만 97*1.25, 97*1.25^n 승으로 이렇게 데이터가 적절히 나눠져 버리면, 별로 사용하지도 않았는데, 더 많은 청크를 사용하게 될 가능성이 있습니다. 물론, 이 청크들이 다 써야 같은 사이즈는 다른 청크를 이용하겠지만, 데이터 사이즈가 이렇게 단계마다 적게 존재한다면, 생각보다 많은 메모리를 사용할 가능성이 있을듯 합니다.

  4. 예전에 이유는 정확히 알 수 없지만(이런 비슷한 이유로 추정만 하는데…) 128GB 서버를 6개로 돌리는데 특정 프로세스 하나만, 스왑에 빠져서 응답속도가 느렸던 기억이…

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.