제작 환경 서버(한 서버에 여러 서비스 설치)
항상 서버 부하가 높았는데, 하드웨어를 업그레이드한 후 개선되었고, CPU와 메모리도 완화되었지만 디스크 IO는 여전히 동일합니다.
nmon을 사용하여 여러 디스크로 구성된 LVM 파티션을 볼 수 있으며 쓰기 속도는 항상 100%입니다.lsof를 사용하여 확인하세요. 이 파티션의 주요 읽기 및 쓰기는 MySQL과 Redis입니다.
iotop을 사용하여 io 순위를 확인하세요.
[jbd2/dm-0-8]
[flush-253:0]
[redis]
[mysql]
이 문제를 해결하려면 다음 세 가지 측면을 고려하세요.
1. 애플리케이션 계층
애플리케이션 성능 문제가 있는지 확인하기 위한 Redis 상태 모니터링
Mysql 상태 모니터링, 느린 쿼리 로그 및 기타 관련 문제점 보기
2. 시스템 계층
flush-253:0 및 jbd2/dm-0-8은 실제로 디스크 및 파일 시스템을 처리하는 운영 체제의 프로세스입니다. 애플리케이션 레이어.
3. 하드웨어
디스크 상태 확인, 서버 하드웨어 문제
rdb 모드 저장
redis 기본 구성
save 900 1
save 300 10
save 60 10000
과 관련된 높은 redis io 문제가 발생했습니다. 위의 의미는
900초 이내에 서비스가 1회 이상 수정되었거나
300초 이내에 서버가 10회 이상 수정되었거나
60초 이내에 서버가 10,000회 이상 수정되었음을 의미합니다. 초
저장을 트리거합니다.
rdb 방법은 기본 프로세스를 하위 프로세스로 포크한 다음 하위 프로세스의 모든 데이터를 디스크에 저장하는 것입니다.
기타 예를 들어, 10G 메모리를 차지하는 Redis가 있는 경우 최대 900초마다 10G 메모리의 모든 데이터가 디스크에 저장됩니다. 장치의 IO 기능이 좋지 않거나 Redis 데이터 볼륨이 더 큽니다. , 저장 작업이 완료되지 않습니다. 이 경우 계속 저장되므로 io가 높아집니다.
해결 방법은
1 Redis 저장 주기를 연장하는 것입니다.
2 Redis를 분할하세요. 단일 Redis 프로세스를 너무 많이 저장하지 마세요. 여러 데이터를 사용하세요.
3 aof 메서드를 사용해 보세요.