SQLSTATE – MySQL Não Responde


Você está lendo:

SQLSTATE – MySQL Não Responde

Este post foi marcado como:

Problemas de comunicação com banco de dados acontecem em qualquer sistema, independente de ser ou não Magento.

Então na verdade esse post ajuda a todos os desenvolvedores que trabalham com banco de dados, mais especificamente com o MySQL.

O SQLSTATE informa um problema, o que causou o problema de comunicação. Mas não indica sua origem. Vejamos abaixo.

Interpretando as mensagens

Geralmente são mensagens curtas, do tipo:

Que na verdade não nos informa nada, apenas o que já sabemos (deu pau!). Uma tradução livre para estas mensagens seriam respectivamente:

E por isso é tão difícil encontrar uma solução pronta, pois desconhecemos as causas do problema.

Possíveis causas

Servidor fora do ar. E isso pode acontecer por alguns segundos ou algumas horas. O servidor de banco de dados pode ter reiniciado ou desligado.

E isso pode ocorrer por diversas razões, como uma atualização de versão ou segurança, falta de energia, desligamento acidental, sobrecarga, travamentos, etc.

Tempo de resposta. Todo sistema possui um limite de espera, e quando seu sistema "conversa" com o banco de dados, é feito uma solicitação... o MySQL aceita sua solicitação e vai processar... e isso pode levar algum tempo... se você não esperar tempo suficiente, vai embora sem a resposta.

Ou seja, existe uma configuração que informa ao servidor qual o tempo limite de execução para uma solicitação. Se o tempo estourar, o processo é interrompido, e uma mensagem de erro é lançada ao sistema.

Eu não pretendo me aprofundar no assunto, mas existe também a fila de espera. Você quer fazer uma solicitação ao banco de dados, mas antes de você existem outras 300 pessoas aguardando pra fazer a consulta. E o volume de transações afeta o seu tempo de resposta, e também na sobrecarga, comentado anteriormente.

Infra-estrutura

Como eu falei no início do post, é difícil dar uma solução definitiva, pois a causa do problema é desconhecida e/ou incerta. Porém, muitas vezes a deficiencia está na infra-estrutura utilizada.

Servidor e Hospedagem. Muita gente confunde servidor e hospedagem, e não é possível dar uma explicação aprofundada no momento. Mas em resumo:

Servidor, é a máquina, o computador que vai permanecer ligado e conectado à internet para que as pessoas acessem seu site.

Hospedagem, é a sua configuração dentro deste servidor, os recursos que estarão disponíveis para seu sistema.

Ambos são importantes, então é imperativo que você contrate um servidor de qualidade, com um bom plano de hospedagem (VPS, Dedicado, ou Cloud).

Empresas recomendadas: Rackspace, Nexcess, UolHost, Hostgator

Configuração

Algumas vezes você consegue resolver o problema através de configuração, ao menos temporariamente (até esgotar os recursos). Acesse seu MySQL através do PhpMyAdmin e clique em Variables.

Todas as variáveis podem (e devem) ser configuradas conforme a necessidade do seu sistema e/ou volume de acessos. No caso do Magento você poderia alterar os valores de:

Referência oficial: connect_timeout, wait_timeout, key_buffer_size, table_open_cache, max_connections.

Nem sempre você vai ter acesso a essas configurações, principalmente se estiver usando um plano de hospedagem compartilhado.

Atenção! Se você estiver usando um plano compartilhado, os problemas serão recorrentes.

Ao menos agora você tem uma idéia do que pode ser feito para resolver o problema.

Sucesso!

Junte-se ao Clã

Você está sendo recrutado para o clã do Mario SAM.
Faça parte do maior grupo de usuários Magento da face da Terra.