Idag fastnar webbplatsen igen, och ett stort antal sömn finns
Orsaker till sömn:
1 Klientprogrammet anropade inte mysql_close() innan det avslutades.
2 Klienten hade sovit mer än wait_timeout eller interactive_timeout sekunder utan att skicka några förfrågningar till servern.
3 Klientprogrammet avslutades abrupt mitt under en dataöverföring
Om antalet viloprocesser under samma period är för högt, och det totala antalet anslutningar i andra tillstånd överstiger värdet max_connection, kan MySQL inte längre behandla några förfrågningar utom root-användaren, kan inte upprätta en anslutning med någon förfrågan eller hänger direkt
Lösning:
1. För det första, kontrollera om ditt program använder pconnect-metoden, och för det andra, kontrollera om mysql_close() anropas i tid innan sidan körs. Försök att inte använda pconnect-metoden, dvs. använd mysql_connect. När programmet körs ska mysql_close uttryckligen anropas
2. Lägg till wait_timeout och interactive_timeout i my.cnf, sätt värdet mindre, som standard är wait_timeout värdet 8 timmar, du kan ändra det till 1 timme eller en halvtimme. På så sätt dödar MySQL döda anslutningar snabbare. Förhindra att det totala antalet anslutningar överstiger max_connection-värdet.
wait_timeout för stor kommer att leda till att ett stort antal SLEEP-processer i MySQL släpps i tid, vilket drar ner systemets prestanda, men om inställningarna är för små kan du stöta på problem som "MySQL har försvunnit".
Sätt max_connection värdet till ett högre värde, men det är uppenbarligen inte lämpligt, ju fler anslutningar du har, desto mer stress lägger det på din server. Faktum är att dessa anslutningar är överflödiga, och att avsluta dem så snart som möjligt är den bästa policyn.
3. Analysera systemets SQL-sökningar steg för steg, hitta SQL som är för långsam och optimera den
1)interactive_timeout: Parameterbetydelse: Antalet sekunder servern väntar på en aktivitet innan den stänger av den interaktiva anslutningen. En interaktiv klient definieras som en klient som använder CLIENT_INTERACTIVE alternativ i mysql_real_connect(). Standardparameter: 28800 sekunder (8 timmar)
(2)wait_timeout: Parameterbetydelse: Antalet sekunder som servern väntar på aktivitet innan den stänger den icke-interaktiva anslutningen. När tråden startar initieras sessionens värde wait_timeout baserat på det globala wait_timeout- eller globala interactive_timeout värdet, beroende på klienttyp (definierat CLIENT_INTERACTIVE anslutningsalternativen för mysql_real_connect()). Standardparameter: 28800 sekunder (8 timmar)
Det finns en övre gräns för det maximala antalet anslutningar som MySQL Server kan stödja, eftersom varje anslutning etableras och förbrukar minne, så vi förväntar oss att klienterna kopplar bort och frigör det upptagna minnet efter att ha anslutit sig till MySQL Server för att hantera motsvarande operation. Om din MySQL Server har ett stort antal inaktiva anslutningar kommer de inte bara att förbruka minne förgäves, utan om anslutningarna fortsätter att samlas och öppnas kommer de så småningom att nå det maximala antalet anslutningar i MySQL Server, vilket rapporterar felet 'för många anslutningar'. Värdesättningen för wait_timeout bör bedömas utifrån systemets funktion. Efter att systemet har varit igång en tid kan du kontrollera anslutningsstatusen för det aktuella systemet via kommandot visa processlist, om du hittar ett stort antal anslutna processer i viloläge betyder det att parameterinställningen är för stor, och du kan göra lämpliga justeringar för att göra mindre justeringar.
SQL-kommando:
Denna modifieringsmetod finns iEfter att ha startat om MySQL-tjänsten kommer den att vara ogiltig, så det är bäst att konfigurera dessa två egenskaper i MySQL-konfigurationsfilen.
Modifiera my.cnf-filen under Linux:
|