Redis 사용자로부터 보고서를 받았는데 Linux 및 스케줄러 분야의 전문가가 아니기 때문에 무엇을 대답해야할지 잘 모르겠습니다. 그러나 Redis 프로젝트로서 특히 이런 종류의 문제를 파악해야합니다. 앞으로 Redis Cluster와 마찬가지로 많은 Redis 인스턴스가 단일 상자에 동시에 실행됩니다. 그래서 여기에 도움을 요청하고 있습니다.
문제:
- 커널 : "Linux redis1 2.6.32-305-ec2 # 9-Ubuntu SMP Thu Apr 15 08:05:38 UTC 2010 x86_64 GNU / Linux"
- 충분한 여유 RAM, 중요한 I / O를 수행하는 다른 프로세스는 없습니다.
- 실제 서버가 아닌 EC2 빅 인스턴스에서 실행하는 것이 중요 합니다. 가상화되지 않은 환경에서는 그런 것을 보지 못했습니다. EC2 인스턴스는 "고용량 메모리 초대형 인스턴스 17.1GB 메모리, 6.5 ECU (각각 3.25 EC2 컴퓨팅 유닛을 갖춘 2 개의 가상 코어), 420GB의 로컬 인스턴스 스토리지, 64 비트 플랫폼" 이었습니다.
기본적으로 큰 Redis 인스턴스를 다시 시작하면 시스템이 너무 느려져 더 이상 쉘에 입력 할 수 없습니다. Redis는 인스턴스를로드 할 때 100 %의 CPU를 사용하고 (가능한 빨리 데이터를로드 함) dump.rdb 파일을 순차적으로 읽습니다. 로드가 I / O 바운드가 아닌 CPU 바운드이므로 I / O는 특히 높지 않습니다.
지구상에서 두 개의 CPU와 충분한 RAM이 있고 디스크에 스왑 된 것이없는 상자가 기본적 으로이 작업로드로 작업을 중지 해야하는 이유는 무엇입니까?
나는 이것이 EC2 인스턴스라는 사실과 관련이 있다는 인상을 받았습니다. 따라서 Redis의 다른 인스턴스에서도 문제없이 Redis 24GB 데이터 세트 를 항상 상자에 로드 할 때 사용되는 가상화 기술과 관련이 있습니다. 높은 부하로 작동).
힌트 주셔서 감사합니다!
살바토레
편집 : 트위터에서받은 의견 추가 :
@ ezmobius에서 : @antirez 가장 먼저 할 일은 / mnt 또는 로컬 임시 드라이브에서 EBS 결함이 있는지 확인하는 것입니다. 두 번째는 "첫 번째 쓰기 패널티"(google it)가 아닌지 확인하는 것입니다. 먼저 디스크에서 0을 dd로 입력해야합니다.
@dvirsky : @antirez 정확히 같은 ec2 노드에서 많은 redis 인스턴스를 실행하고 있습니다. 나는 bgsave에서 약간의 둔화를 보았지만이 현상은 아닙니다.