inserções atrasadas do MySQL e do WordPress

1

Eu tenho um servidor com vários sites WordPress rodando nele. A configuração do servidor é bastante padrão: CentOS, Apache, MySQL, cPanel.

Tenho notado que muitas vezes vejo as seguintes linhas na lista de processos mysqladmin para diferentes bancos de dados do WP:

| Id | User | Host | db | Command | Time | State | Info
+---------+------------------+-----------+------------------+----------------+------+----------------------+---------
| 4688637 | DELAYED | localhost | salr4e1_wrdp2 | Delayed insert | 208 | Waiting for INSERT |

Não consigo entender por que a inserção é mostrada como atrasada? Se houver vários bancos de dados desse tipo na lista de processos, a carga estará crescendo. Isso não faz meu servidor se sentir bem.

Estou tentando usar mysqlcheck -aro para reparar esses bancos de dados. Às vezes ajuda, mas muitas vezes não e eu tenho que matar esses processos para diminuir a carga do servidor.

    
por Andrew 02.05.2011 / 16:17

1 resposta

1

Por favor, note que seu nome de usuário é DELAYED. Este é um nome de usuário interno para o mysqld processar qualquer INSERIR ATRASADO , que funciona apenas nas tabelas MyISAM, MEMORY, ARCHIVE e BLACKHOLE.

Este pode ser o momento certo para mude seus bancos de dados WordPress do MyISAM para o InnoDB . Se você mudar para o InnoDB, altere todas as instruções INSERT DELAYED para INSERT ou as instruções gerarão erros.

UPDATE

Você tem várias opções

Opção 1) Mova cada banco de dados do WP para um servidor de banco de dados separado (Bare-Metal ou Virtual)

Você pode configurar cada banco de dados para as necessidades do banco de dados específico do WP. Claro, existem considerações de orçamento fora do escopo desta questão.

Opção 2) Crie várias instâncias do MySQL no mesmo servidor de banco de dados, uma para cada banco de dados do WP

Você pode configurar cada banco de dados para as necessidades do banco de dados específico do WP, mas o datadir para cada banco de dados do WP deve residir em um volume de disco separado.

Opção 3) Aumentar o tamanho do servidor de banco de dados

Adicione mais RAM e use um volume de disco mais rápido. Então, configure a instância do MySQL para utitlize tanta RAM para MyISAM quanto possível . Tenha em mente que o cache do MyISAM é apenas para páginas de índice e não para dados.

Opção 4) Combinação das opções 2 e 3

Opção 5) Configuração das opções de atraso

delayed_insert_limit : depois de executar tantas instruções INSERT DELAYED , as declarações SELECTs pendentes têm prioridade para serem executadas antes de permitir novas instruções INSERT DELAYED.

delayed_insert_timeout : o thread do handeler de segundos aguarda antes do tempo limite .

delayed_queue_size : limite por tabela do número de linhas. Se a fila estiver cheia, qualquer nova instrução INSERT DELAYED fará uma pausa até que a fila tenha espaço.

Opções 6) Minha proposta original. Converta tudo para o InnoDB !!! Você pode armazenar em cache as páginas Data e Index no buffer pool InnoDB.

    
por 02.05.2011 / 21:36

Tags