공통 Databases for Redis 오류를 방지하는 방법은 무엇입니까?

Databases for Redis 는 인메모리 데이터베이스입니다. 이는 데이터를 승인, 처리 및 저장하는 방법에서 일반적인 지속적 데이터베이스와 다릅니다. 다음 정보는 발생할 수 있는 공통 오류, 해당 오류에 대한 몇 가지 이유 및 해당 오류를 수정하기 위해 적용할 수 있는 솔루션을 강조표시합니다.

오류: Connection to master lost 메시지

Databases for Redis 는 두 개의 멤버 (마스터 및 복제본) 및 세 개의 센티널과 함께 작동합니다. 다음 이유가 connection to master lost 메시지의 원인일 수 있습니다.

a. 초당 입출력 작업 수(IOPS)가 낮기 때문에 마스터가 사용 중이고 센티널에 응답하지 않아 플랫폼 로그에 이 오류 메시지가 반환됩니다.

b. 네트워크 대기 시간으로 인해 센티널은 마스터와 통신할 수 없습니다.

c. 스케줄된 유지보수 활동.

d. 부 버전 업그레이드.

솔루션

다음 솔루션을 시도하여 오류를 수정하십시오.

a. 디스크 크기를 늘리십시오. 1GB는 10IOPS와 같습니다.

b. 전용 리소스 할당을 위해 격리된 컴퓨팅으로 이동합니다.

c. RAM 크기를 늘리십시오.

d. RETRY 로직이 필요하므로 이 로직이 구현되었는지 확인하십시오.

e. 복제본은 몇 초 후에 자동으로 마스터로 승격됩니다.

f. Redis 인스턴스에서 memory eviction 또는 TTL 정책을 구현하십시오.

IBM® Cloud Databases 는 마스터 노드에서 어떤 활동도 수행하지 않습니다. 필요한 경우 모든 활동이 복제본 노드에서 완료되며, 이 노드는 마스터로 승격됩니다. 데이터베이스는 복제본 승격이 발생하기 전에 마스터 노드를 찾기 위해 30초동안 대기하도록 설정됩니다.

오류: 비동기 AOF fsync가 너무 오래 걸림 (디스크가 사용 중입니까?)

AOF는 첨부 전용 파일입니다. 이는 지속적 설정이 켜져 있을 때 Redis 지속적 디스크에 기록되는 로그입니다.

Redis 는 AOF 및 RDB 파일을 사용하여 로그를 작성하고 스냅샷을 위해 RDB를 사용합니다.

이 오류가 발생할 수 있는 몇 가지 이유는 다음과 같습니다.

a. 충분하지 않은 IOPS로 인해 Redis 가 디스크에 쓸 수 없습니다.

b. 일괄처리가 실행되는 동시에 Databases for Redis 백업이 실행될 수 있습니다.

c. 애플리케이션이 Redis 인스턴스에 알 수 없는 API 호출을 넣고 있을 수 있습니다.

메트릭에 사용되는 PSYNC를 제외하고 인스턴스에서 다른 API를 요청하지 않습니다.

솔루션:

다음 솔루션을 시도하여 오류를 수정하십시오.

a. 디스크 크기를 늘리십시오. 야구장을 추천하는 것은 예상보다 30% 더 많은 양입니다.

b. Redis 가 최대 용량인 경우 단일 Redis 인스턴스를 여러 인스턴스로 분할하고 애플리케이션 아키텍처를 조정하십시오.

c. 필요하지 않은 경우 지속성을 끄십시오. 대신 캐시 모드로 변경하십시오.

디스크 크기는 축소할 수 없지만 메모리는 축소할 수 있습니다. Redis 은 인메모리 데이터 저장소이므로 인스턴스의 메모리를 크게 줄이면 오류가 발생할 수 있으므로 인스턴스의 메모리 크기를 축소하기 전에 진행 중인 데이터 크기를 평가하는 것이 좋습니다.

오류: 인스턴스 스케일링이 중단되었거나 예상보다 오래 걸립니다.

IBM Cloud을 사용하면 데이터 요구사항이 증가함에 따라 인스턴스를 스케일링하거나 크기를 조정할 수 있습니다. UI, CLI및 API에서 자동 스케일링 및 수동 스케일링을 제공합니다. 그러나 인스턴스의 크기를 조정할 때 주의하십시오. 스케일링이 예상보다 오래 걸리는 경우 다음 이유 중 하나 때문일 수 있습니다.

a. 인스턴스가 이미 가장 큰 인스턴스 (cores*ram) 에 있으며 현재 워크로드를 이동할 수 있는 더 큰 클러스터가 없습니다. 이 경우 새 클러스터가 형성되고 인스턴스가 이동되며 몇 분이 걸릴 수 있습니다.

b. 메모리를 크게 줄였습니다 (예: 16GB RAM에서 10GB RAM으로). 그러나 데이터 저장소 크기 (디스크) 가 더 높습니다 (예: 11GB). 이러한 경우, RAM에 디스크에서 데이터를 읽을 수 있는 충분한 공간이 없으며 형식이 고정될 수 있습니다.

솔루션:

다음 솔루션을 시도하여 오류를 수정하십시오.

a. Redis 는 기본 조작을 위한 단일 스레드입니다. 더 적은 코어와 더 많은 메모리를 사용할 것으로 예상됩니다. 이는 클러스터의 가용성 가능성을 증가시킵니다.

b. I/O 요구사항에 따라 RAM및 디스크를 늘리십시오.

c. RAM을 크게 줄이지 마십시오. 당신은 점진적으로 감소시키는 것이 좋다.

Redis 고유 프로세스를 수행하기 위한 워터마크 메모리가 남아 있는지 확인합니다.

오류입니다: 읽기 전용 복제본에 대해 쓸 수 없습니다

Databases for Redis 에는 두 개의 노드 (마스터 및 복제본) 가 있습니다. 사용자는 마스터 노드에만 연결할 수 있으며 복제본 노드는 일반적으로 사용자가 액세스할 수 없는 고가용성을 보장하는 데 사용됩니다. 그러나 원격 연결에서와 같이 복제본이 마스터로 승격되는 경우 전환이 발생할 수 있습니다. 서비스에서 순간적인 문제를 경험할 수 있으며 노드가 올바르게 구성된 경우에는 다른 영향이 예상되지 않습니다.

a. IOPS가 낮기 때문에 마스터가 사용 중이며 센티널에 응답하지 않아 플랫폼 로그에 이 오류 메시지가 반환됩니다.

b. 네트워크 대기 시간으로 인해 센티널은 마스터와 통신할 수 없습니다.

c. 스케줄된 유지보수.

d. 부 버전 업그레이드.

솔루션:

다음 솔루션을 시도하여 오류를 수정하십시오.

a. 애플리케이션 디자인에 재시도 및 다시 연결 로직을 포함하십시오. ioredisnoderedis 와 같은 라이브러리를 사용할 수 있습니다. 자세한 정보는 Redis 블로그 게시물을 사용한 오류 발견 및 처리 를 참조하십시오.

b. 특정 클라이언트에는 재시도 및 다시 연결 로직이 내장되어 있습니다. 이러한 클라이언트도 사용할 수 있습니다.

c. 클라우드 서비스에는 재시도 및 다시 연결 로직을 사용하는 것이 좋습니다.