728x90
반응형
초기에 Redis 와 Web 을 연동시에 잘 연동이 되는 것을 확인했으나.
어느 순간부터 아래와 같은 에러가 발생하는 것을 확인했습니다.
2023-09-11 23:41:34.216 ERROR 1 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost] : Exception Processing ErrorPage[errorCode=0, location=/error]
org.springframework.data.redis.RedisSystemException: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: OOM command not allowed when used memory > 'maxmemory'.
이슈 해결
apiVersion: v1
kind: ConfigMap
metadata:
name: redis-config
namespace: lucy3
data:
redis-config: |
maxmemory 10gb
maxmemory-policy allkeys-lru
- maxmemory 설정
- redis 에 접근해서 INFO memory 명령어 실행
- used_memory 값으로 현재 사용중인 레디스 메모리 사용량 확인 !
- maxmemory-policy 의 설정 allkeys-lru
- 이 정책을 설정하면, Redis는 메모리가 부족할 때 가장 오랫동안 접근되지 않은 키, 즉 가장 나중에 사용된 키를 먼저 제거합니다. 이 정책은 모든 키에 적용되기 때문에 특정 키의 중요도나 만료 시간 등을 고려하지 않습니다.
- 다른 옵션들도 있으니 참고
- volatile-lru
- 설정된 만료 시간(expire time)이 있는 키 중에서 가장 오랫동안 사용되지 않은 키를 삭제합니다.
- allkeys-random
- 모든 키 중에서 무작위로 키를 선택하여 삭제합니다.
- volatile-random
- 만료 시간이 설정된 키 중에서 무작위로 키를 선택하여 삭제합니다.
- volatile-ttl
- 만료 시간이 설정된 키 중에서 가장 먼저 만료될 키를 삭제합니다.
- noeviction
- 어떠한 데이터도 삭제하지 않습니다. 메모리가 부족하면 쓰기 작업은 실패합니다.
- volatile-lru
- 다른 옵션들도 있으니 참고
- 이 정책을 설정하면, Redis는 메모리가 부족할 때 가장 오랫동안 접근되지 않은 키, 즉 가장 나중에 사용된 키를 먼저 제거합니다. 이 정책은 모든 키에 적용되기 때문에 특정 키의 중요도나 만료 시간 등을 고려하지 않습니다.
설정을 한 후에도 적용이 되지 않는다면 pod 를 재시작하는 방법도 있습니다.
kubectl rollout restart deployment {deployment name} -n {namespace name}
728x90
반응형
'개발중 > Redis' 카테고리의 다른 글
Redis Pub/Sub 에 대해서 알아보기. (0) | 2024.09.24 |
---|---|
[트러블 슈팅] Headless Service 에 대한 오해 (1) (0) | 2023.09.18 |
고성능을 위한 Redis (High Availability, HA)와 Kubernetes 구축 마스터 가이드 (Spring Session storage 설정까지) (1) | 2023.09.18 |
[트러블슈팅] Could not connect to Redis at 127.0.0.1:6379: Connection refused (0) | 2023.09.12 |
k8s Redis 구성방식에 대해서 고민하는 중입니다. (0) | 2023.09.08 |