Mysql
 sql >> Base de données >  >> RDS >> Mysql

Ressource MySQL temporairement indisponible

Supposons que votre système est actuellement basé sur Unix (comme indiqué dans votre énoncé de problème). Si c'est le cas, voici l'ensemble des problèmes que vous pourriez rencontrer :

  1. Vous n'avez plus de mémoire disponible pour MySQL.

    C'est le problème le plus probable auquel vous êtes confronté. Chaque connexion dans le pool de connexions de MySQL nécessite de la mémoire pour fonctionner, et si cette ressource est épuisée, aucune autre connexion ne peut être établie. Bien sûr, les empreintes mémoire et les tailles de paquet maximales de diverses opérations peuvent être réglées dans votre équivalent à my.cnf si vous découvrez qu'il s'agit d'un problème.

    Voici un fil de discussion supplémentaire qui peut vous aider , mais vous pouvez également envisager d'utiliser des outils de profilage plus simples comme top pour obtenir une bonne estimation approximative de ce qui se passe.

  2. Vous n'avez plus de descripteurs de fichiers disponible pour votre compte utilisateur MySQL.

    Autre problème courant :si vous essayez de traiter des requêtes qui nécessitent des E/S de fichier supérieures à la limite de 1 024 (par défaut), vous rencontrerez des cas où l'opération échouera tout simplement. En effet, la plupart des systèmes spécifient une limite souple et stricte sur le nombre de descripteurs de fichiers ouverts que chaque utilisateur peut avoir à la fois, et le dépassement de ce seuil peut causer des problèmes.

    Cela aura généralement une série de signes flagrants exprimés dans vos fichiers journaux. Vérifiez /var/log/messages et vos répertoires comparables (par exemple, /var/log/mysql pour voir si vous pouvez trouver quelque chose d'intéressant.

  3. Vous avez rencontré un livelock ou deadlock scénario où votre fil est insatisfaisant.

    Corollaire de l'épuisement de la mémoire et des descripteurs de fichiers, les threads peuvent expirer si vous avez dépassé la charge de calcul que votre système est capable de gérer. Il ne lancera pas ce message d'erreur, mais c'est quelque chose à surveiller à l'avenir.

  4. Votre système est à court de PID disponibles pour fork .

    Autre scénario courant :fork n'a qu'un nombre limité de PID disponibles pour son utilisation à un moment donné. Si votre système est simplement overforké , il ne pourra plus répondre aux demandes.

    La vérification la plus simple consiste à vérifier si d'autres services peuvent se connecter à la machine. Par exemple, essayer de se connecter en SSH à la boîte et découvrir que vous ne pouvez pas est un gros indice.

  5. Un proxy en amont ou un gestionnaire de connexions est à court de ressources et a cessé de traiter les requêtes.

    Si vous avez une couche de service entre votre client et MySQL, il convient de l'inspecter pour voir si elle s'est écrasée, s'est bloquée ou est devenue instable. Les conseils ci-dessus s'appliquent.

  6. Votre mappeur de port s'est épuisé après 65 536 connexions .

    Peu probable, mais encore une fois, un cas d'épuisement possible. Vérifier la connexion de service triviale comme ci-dessus est, euh, également le meilleur port d'escale ici.

En bref :il s'agit d'un scénario d'épuisement des ressources, y compris le serveur étant simplement "hors service". Vous allez devoir profiler davantage votre système pour voir ce que vous bloquez. Tout ce que le message d'erreur nous donne dans ce cas est le fait que la ressource n'est pas disponible pour le client -- nous aurions besoin de plus d'informations sur le serveur pour déterminer un remède plus adéquat.