MySQL e alta jdb2 io / wait

1

Estou executando o MySQL 5.5 com tabelas InnoDB. Existem cerca de 200 consultas por segundo. Há também tabelas com 500 000 ou mais linhas. Mas eu tenho grandes problemas com a carga do servidor e io / wait especialmente com o jdb2.

jdb2 / md2-8 está recebendo 99% IO / wait ver imagem de saída iotop: Saída Iotop

Especificações da caixa: Xeon 1246 v3, 32 GB de RAM, 2x 240 Intel SSD RAID 1

Eu não sei se tenho algo errado na minha configuração ou se é um problema relacionado ao RAID. Alguma dica?

Meu mysql my.cfg:

innodb_file_per_table   = 1
join_buffer_size    = 1M
open_files_limit    = 10000
myisam_use_mmap     = 1
query_cache_type    = 1
table_open_cache    = 2000
concurrent_insert   = 2
max_connections     = 3000

query_cache_size    = 16M
key_buffer_size     = 16M
read_buffer_size        = 8M
query_cache_limit   = 4M
query_cache_min_res_unit = 1K
tmp_table_size      = 64M
thread_cache_size   = 1500

sort_buffer_size    = 2M
max_heap_table_size     = 64M
innodb_buffer_pool_size = 5000M
read_rnd_buffer_size    = 128M
thread_concurrency      = 8
thread_stack        = 1M
innodb_log_buffer_size  = 2M

Obrigado.

    
por Welite 24.10.2015 / 20:46

3 respostas

1

jbd2 é um processo do kernel usado para sincronizar o diário do sistema de arquivos ao disco. Isso significa que sua configuração do MySQL está vinculada à gravação no momento.

Como alta carga jdb2 para uma contagem de consultas tão baixa (200 por segundo) é bastante estranha, especialmente com SSD rápido. Você está usando uma placa RAID sem cache? Pode desativar seus caches internos SSD, dando um desempenho abismal. Em caso afirmativo, você pode tentar:

  1. reativar o cache particular do seu disco
  2. use a opção my.cnf innodb_flush_log_at_trx_commit=0
  3. use uma placa RAID habilitada para BBU com 512 MB de cache DRAM protegido

Por favor note que a opção n.1 e n.2 tem um risco pequeno, mas não zero, de perder alguma transação em caso de perda de energia. De longe, a opção mais segura é a terceira - comprar uma placa RAID adequada.

    
por 24.10.2015 / 21:58
0

Duas coisas a considerar:

1) Você tem índices apropriados para suas perguntas?

2) Você pode adicionar RAM ao seu servidor?

Ao abordar o número 1, você reduzirá significativamente o número de varreduras de tabela completas necessárias para atender às suas consultas. Você precisará gastar uma boa quantidade de tempo, no entanto, entender que tipo de consultas está causando mais carga de E / S.

Ao endereçar # 2, você permitirá que mais de seu banco de dados seja armazenado em cache na RAM, o que agilizará as consultas simultaneamente e reduzirá o IO.

    
por 24.10.2015 / 20:52
0

Seu my.cnf inclui 4 linhas que devem ser removidas, elas são

read_buffer_size
read_rnd_buffer_size
join_buffer_size
thread_stack

são todos requisitos de RAM de conexão e estão aumentando sua pegada de RAM muito mais do que o necessário. Deixe os PADRÕES trabalharem para você melhorar o tempo de resposta com espaço para respirar na RAM.

Para uma análise mais detalhada, adicione ao OriginalPost o seguinte,

SHOW GLOBAL STATUS;
SHOW GLOBAL VARIABLES;
SHOW ENGINE INNODB STATUS;

para até cinco recomendações específicas de cfg, uma por dia para ser aplicada, monitorar.

    
por 02.10.2017 / 16:56