sql >> Databasteknik >  >> RDS >> Mysql

Mysql-resursen är tillfälligt otillgänglig

Låt oss anta att ditt system för närvarande är Unix-baserat (som anges i din problemformulering). Om detta är korrekt, här är uppsättningen problem du kan stöta på:

  1. Du har slut på minne tillgänglig för MySQL.

    Det här är det mest troliga problemet du står inför. Varje anslutning i MySQL:s anslutningspool kräver minne för att fungera, och om denna resurs är slut kan inga ytterligare anslutningar göras. Naturligtvis kan minnesfootprints och maximala paketstorlekar för olika operationer ställas in i din motsvarighet till my.cnf om du upptäcker att detta är ett problem.

    Här är en extra tråd som kan hjälpa där , men du kan också överväga att använda enklare profileringsverktyg som top för att få en bra uppskattning av vad som händer.

  2. Du har slut på filbeskrivningar tillgängligt för ditt MySQL-användarkonto.

    Ett annat vanligt problem:om du försöker betjäna förfrågningar som kräver fil IO över 1 024-gränsen (som standard), kommer du att stöta på fall där operationen helt enkelt misslyckas. Detta beror på att de flesta system anger en mjuk och hård gräns för antalet öppna filbeskrivningar som varje användare kan ha tillgängliga samtidigt, och att gå över denna tröskel kan orsaka problem.

    Detta kommer vanligtvis att ha en serie uppenbara tecken som uttrycks i dina loggfiler. Kontrollera /var/log/messages och dina jämförbara kataloger (till exempel /var/log/mysql för att se om du kan hitta något intressant.

  3. Du har stött på ett livelock eller dödläge scenario där din tråd är otillfredsställande.

    Som en följd av utmattning av minne och filbeskrivningar kan trådar timeout om du har överskridit den beräkningsbelastning som ditt system kan hantera. Det kommer inte att skicka detta felmeddelande, men det här är något att se upp med i framtiden.

  4. Ditt system håller på att ta slut på PID:er tillgängliga för fork .

    Ett annat vanligt scenario:fork har bara så många PID tillgängliga för dess användning vid varje given tidpunkt. Om ditt system helt enkelt är övergaffelt , kommer den att sluta kunna betjäna förfrågningar.

    Det enklaste kontrollen för detta är att se om några andra tjänster kan ansluta till maskinen. Till exempel att försöka SSH in i rutan och upptäcka att du inte kan är en stor ledtråd.

  5. En uppströmsproxy eller anslutningshanterare har slut på resurser och har upphört med servicebegäranden.

    Om du har något servicelager mellan din klient och MySQL, tål det att inspektera för att se om det har kraschat, hängt sig eller på annat sätt blivit instabilt. Råden ovan gäller.

  6. Din portkartare har uttömt sig själv efter 65 536 anslutningar .

    Osannolikt, men återigen, ett möjligt utmattningsfall. Att kontrollera den triviala serviceanslutningen enligt ovan är, ehm, också den bästa anknytningen här.

Kort sagt:det här är ett scenario med uttömmande resurser, inklusive att servern helt enkelt är "nedåt". Du måste profilera ditt system ytterligare för att se vad du blockerar på. Allt felmeddelandet ger oss i det här fallet är att resursen inte är tillgänglig för klienten -- vi skulle behöva se mer information om servern för att fastställa ett mer adekvat botemedel.



  1. MySQL kopieringsdatabas

  2. PostgreSQL visuella gränssnitt som liknar phpMyAdmin?

  3. Få ut det mesta av dina PostgreSQL-index

  4. MySQL:@variabel vs variabel. Vad är skillnaden?