Alta carga e iowait no servidor de banco de dados MySQL leva a lentidão do MySQL INSERTS

1

Eu tenho um servidor de banco de dados MySQL rodando no Ubuntu 12.10 com 64 GB de RAM, SATA de 2x3 TB 6 Gb / s HDD 7200 rpm e software RAID 1 e um Intel Core i7-3930K. O servidor de banco de dados é acessado por uma rede local com uma placa Ethernet dedicada de 1 GB. O banco de dados tem cerca de 50 GB e é o mestre em uma configuração de replicação.

IMO, existem dois problemas que levam a lentidão na consulta ao MySQL:

  1. A carga é sempre relativamente alta (> 2) mesmo quando o servidor db está ocioso (não é um grande problema, pois o processador tem 12 núcleos, mas não parece correto)
  2. top mostra que cerca de 95% do sistema está inativo, < 1% é usado 5% está aguardando (veja a captura de tela a seguir)

iotop--onlymostraqueamaiorpartedodiscoIOéproduzidopelojdb2/md2-8enãopelomysqld-entãoomysqldnãodeveriaseroproblema-masporqueojdb2/md2-8estáusandotantosrecursos?

cat /proc/mdstat gera o seguinte:

Minhas perguntas são:
O que causa o desempenho lento do MySQL?
É o iowait? O que causa o iowait?
É o RAID 1 - É o disco rígido usado?

Qualquer ajuda é muito apreciada!

    
por horen 31.01.2013 / 10:55

2 respostas

2

Você está executando um banco de dados de log pesado em apenas sobre os discos mais lentos lá fora. A razão pela qual você está vendo o jdb2 em níveis tão altos é porque está tendo dificuldade em escrever os diários do ext4 no disco

Altere os discos para algo que possa ser mantido (os SSDs vêm à mente, embora todos os discos SAS regulares com um cache de bateria funcionem) e / ou comece a sintonizar as coisas. Há abundância de documentação por aí quando se trata de ajuste do sistema de arquivos em ambientes SQL.

Um bom ponto de partida está aqui: link

    
por 31.01.2013 / 11:02
0

Eu tive esse problema depois de atualizar para o MySQL 5.7.

Definindo "sync_binlog = 0" corrigiu para mim. O MySQL alterou o padrão de 0 para 1 em 5.7.

    
por 16.07.2017 / 00:53