1. Redis 배포 구조 최적화 제안
1. Master는 AOF나 RDB Persistence를 하지 않지만, Slave는 AOF Persistence를 동시에 하는 것이 좋습니다
2. 모든 마스터는 슬레이브를 증가시킵니다
3. 마스터는 M-S-S 방식을 사용하여 2개 이하의 슬레이브를 마운트할 수 있습니다. 고가용성, 즉 마스터-슬레이브 전환을 보장하려면 Keepalived 메커니즘을 사용할 수 있습니다.
참고: 위 내용은 불합리한 Redis 배포 구조를 기반으로 한 제안이며 Redis 최적화 솔루션을 참조하여 제공됩니다. in Sina Weibo 및 Taobao 아키텍처
2. Redis 구성 최적화 제안
1.tcp-keepalive 60
명령을 너무 오랫동안 실행하여 제한 시간에 도달하여 연결이 끊어지는 것을 방지하고 성능을 개선할 수 있습니다.
2.stop-writes- on-bgsave-error no
bgsave 스냅샷 작업에 오류가 발생하면 후속 쓰기 작업이 실패하므로 디스크에 데이터 쓰기를 중지합니다. 쓰기 작업을 수행하려면 이 값을 no로 변경해야 합니다.
3.rdbchecksum no
RDB 데이터의 정확성을 확인하면 성능이 10% 저하되므로 끄는 것이 좋습니다.
4.auto-aof- Rotate-max-size 20gb
auto-aof-rotate-max-total 4 auto-aof-rewrite-percentage 0 (关闭rewrite模式)
AOF 재작성 모드를 회전 모드로 변경하면 AOF가 온라인이 됩니다. 실시간 재작성 기능이 오프라인 작업으로 전환되고, 하나의 AOF 파일이 여러 복사본으로 절단됩니다(로그 절단과 유사). 이는 Redis 성능 및 메모리 활용도를 향상시킵니다.
5.no-appendfsync-on-rewrite yes
새 수정된 데이터가 디스크에 플러시될 때 IO 차단을 방지하세요
참고: 위는 불합리한 Redis 구성을 기반으로 한 최적화 제안입니다
3. 시스템 커널 구성 최적화 제안
1. IO 차단을 완화하기 위해 AOF 모드가 켜집니다.
/etc/sysctl.conf를 편집하고 다음 구성을 추가합니다.
vm.dirty_background_ratio = 5 vm.dirty_ratio = 10
그런 다음 sysctl -p를 사용하여 구성 파일을 적용합니다.
2. RDB 모드를 활성화합니다.
/etc/sysctl.conf를 편집하고 vm.overcommit_memory=1을 변경합니다.
그런 다음 sysctl -p를 사용하여 구성 파일을 적용합니다
참고: 는 테스트 결과를 바탕으로 한 시스템 커널 최적화 제안입니다
후속 계획:
위는 아키텍처 관점의 최적화 제안이며 향후 후속 조치를 취할 예정입니다. 비즈니스 관점에서 메모리 유형이 합리적인지, 핫 및 콜드 데이터 분할이 합리적입니다.
참고:
핫 및 콜드 데이터 분할과 관련하여 통계 분석을 위해 다음 Redis 명령을 사용할 수 있습니다.
OBJECT REFCOUNT 이 명령은 주로 디버깅(디버깅)에 사용됩니다. 지정된 키에 해당하는 값이 참조되는 횟수를 반환할 수 있습니다.
OBJECT ENCODING 이 명령은 지정된 키에 해당하는 값이 사용하는 내부 표현을 반환합니다.
OBJECT IDLETIME 이 명령은 지정된 키에 해당하는 값이 저장된 이후의 유휴 시간(읽기 또는 쓰기 작업이 요청되지 않음)을 10초 단위로 반환합니다. 향후 구현 중에 개선됩니다.
더 많은 Redis 지식을 알고 싶다면 redis 입문 튜토리얼 칼럼을 주목해 주세요.
위 내용은 Redis 성능 최적화 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!