>  Q&A  >  본문

服务器IO问题(疑似Redis导致的)

某生产环境服务器(多个服务都安装在1台服务器上)

服务器负载一致居高不下,升级过硬件以后有好转,CPU和内存的有所缓解,不过磁盘IO的依然如故;

使用nmon查看由多块磁盘组成一个LVM分区,写一直是100%;

使用lsof查看,该分区的主要读写的是MySQL和Redis;

使用iotop查看io排行,前几个分别是:

[jbd2/dm-0-8]
[flush-253:0]
[redis]
[mysql]

对前2个进程不太了解,有没有那位比较熟悉的大神指点下,前2个进程的用途以及他们和Redis的IO优化建议;

PHP中文网PHP中文网2736일 전731

모든 응답(2)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-24 09:15:53

    이 문제를 해결하려면 다음 세 가지 측면을 고려하세요.
    1. 애플리케이션 계층

    • 애플리케이션 성능 문제가 있는지 확인하기 위한 Redis 상태 모니터링

    • Mysql 상태 모니터링, 느린 쿼리 로그 및 기타 관련 문제점 보기

    2. 시스템 계층
    flush-253:0 및 jbd2/dm-0-8은 실제로 디스크 및 파일 시스템을 처리하는 운영 체제의 프로세스입니다. 애플리케이션 레이어.

    3. 하드웨어
    디스크 상태 확인, 서버 하드웨어 문제

    회신하다
    0
  • 黄舟

    黄舟2017-04-24 09:15:53

    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 메서드를 사용해 보세요.

    회신하다
    0
  • 취소회신하다