Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Recurso Mysql temporariamente indisponível


Vamos supor que seu sistema seja atualmente baseado em Unix (conforme fornecido na declaração do problema). Se isso estiver correto, aqui está o conjunto de problemas que você pode estar enfrentando:

  1. Você ficou sem memória disponível para MySQL.

    Este é o problema mais provável que você está enfrentando. Cada conexão no pool de conexões do MySQL requer memória para funcionar e, se esse recurso estiver esgotado, nenhuma outra conexão poderá ser feita. É claro que as pegadas de memória e os tamanhos máximos de pacotes de várias operações podem ser ajustados em seu equivalente a my.cnf se você descobrir que isso é um problema.

    Aqui está um tópico adicional que pode ajudar , mas você também pode usar ferramentas de criação de perfil mais simples, como top para obter uma boa estimativa aproximada do que está acontecendo.

  2. Você ficou sem descritores de arquivo disponível para sua conta de usuário MySQL.

    Outro problema comum:se você estiver tentando atender a solicitações que exigem E/S de arquivo acima do limite de 1.024 (por padrão), você encontrará casos em que a operação simplesmente falha. Isso ocorre porque a maioria dos sistemas especifica um limite flexível e rígido para o número de descritores de arquivo aberto que cada usuário pode ter disponível ao mesmo tempo, e ultrapassar esse limite pode causar problemas.

    Isso geralmente terá uma série de sinais óbvios expressos em seus arquivos de log. Verifique /var/log/messages e seus diretórios comparáveis ​​(por exemplo, /var/log/mysql para ver se você pode encontrar algo interessante.

  3. Você encontrou um livelock ou deadlock cenário em que seu segmento é insatisfatório.

    Corolário do esgotamento da memória e do descritor de arquivo, os encadeamentos podem atingir o tempo limite se você ultrapassar a carga computacional que seu sistema é capaz de manipular. Ele não lançará essa mensagem de erro, mas isso é algo a ser observado no futuro.

  4. Seu sistema está ficando sem PIDs disponíveis para fork .

    Outro cenário comum:fork só tem tantos PIDs disponíveis para seu uso em um determinado momento. Se o seu sistema é simplesmente overforked , ele deixará de poder atender às solicitações.

    A verificação mais fácil para isso é ver se algum outro serviço pode se conectar à máquina. Por exemplo, tentar SSH na caixa e descobrir que você não pode é uma grande pista.

  5. Um proxy upstream ou gerenciador de conexões ficou sem recursos e parou de atender às solicitações.

    Se você tiver alguma camada de serviço entre seu cliente e o MySQL, é preciso inspecionar para ver se travou, travou ou se tornou instável. O conselho acima se aplica.

  6. Seu mapeador de portas se esgotou após 65.536 conexões .

    Improvável, mas novamente, um possível caso de exaustão. Verificar a conexão de serviço trivial como acima é, ehm, também o melhor porto de escala aqui.

Resumindo:este é um cenário de esgotamento de recursos, incluindo o servidor simplesmente estar "inativo". Você terá que criar um perfil mais detalhado do seu sistema para ver o que está bloqueando. Tudo o que a mensagem de erro nos dá nesse caso é o fato de o recurso não estar disponível para o cliente - precisaríamos ver mais informações sobre o servidor para determinar um remédio mais adequado.