Täna on veebileht jälle kinni jäänud ja leitakse palju und
Une põhjused:
1 Kliendiprogramm ei kutsunud mysql_close() enne väljumist.
2 Klient magas üle wait_timeout või interactive_timeout sekundi, ilma et oleks serverile päringuid esitanud.
3 Kliendiprogramm lõppes järsult andmeedastuse keskel
Kui sama perioodi uneprotsesside arv on liiga suur ja teiste olekute ühenduste koguarv ületab max_connection väärtuse, siis MySQL ei saa enam päringuid töödelda peale juurkasutaja, ei saa luua ühendust ühegi päringuga või hangub otse
Lahendus:
1. Esiteks kontrollige, kas teie programm kasutab pconnect meetodit, ja teiseks kontrollige, kas mysql_close() kutsutakse õigel ajal enne lehe käivitamist. Püüa mitte kasutada pühenduse meetodit, st kasuta mysql_connect. Kui programm käivitatakse, tuleks mysql_close otseselt esile kutsuda
2. Lisa my.cnf wait_timeout ja interactive_timeout, sea väärtus väiksemaks, vaikimisi on wait_timeout väärtus 8 tundi, saad muuta 1 tunniks või pooleks tunniks. Nii tapab MySQL surnud ühendused kiiremini. Vältida, et ühenduste koguarv ületaks max_connection väärtust.
wait_timeout liiga suur võib põhjustada suure hulga SLEEP-protsesside vabastamise MySQL-is õigeaegselt, mis langetab süsteemi jõudlust, kuid kui seaded on liiga väikesed, võid tekkida probleemidega nagu "MySQL on kadunud"
Sea max_connection väärtus kõrgemaks, aga see pole ilmselgelt sobilik – mida rohkem ühendusi sul on, seda rohkem stressi see su serverile tekitab. Tegelikult on need ühendused üleliigsed ja nende võimalikult kiire lõpetamine on parim poliitika.
3. Analüüsi süsteemi SQL-päringut samm-sammult, leia liiga aeglane SQL ja optimeeri see
1)interactive_timeout: Parameetri tähendus: sekundite arv, mil server ootab tegevust enne interaktiivse ühenduse väljalülitamist. Interaktiivne klient on defineeritud kui klient, kes kasutab CLIENT_INTERACTIVE valikut mysql_real_connect(). Parameetri vaikimisi: 28800 sekundit (8 tundi)
(2)wait_timeout: Parameetri tähendus: Sekundite arv, mille jooksul server ootab tegevust enne mitte-interaktiivse ühenduse sulgemist. Kui lõim algab, initsialiseeritakse sessiooni wait_timeout väärtus globaalse wait_timeout või globaalse interactive_timeout väärtuse alusel, sõltuvalt klienditüübist (määratletud CLIENT_INTERACTIVE ühendusvalikud mysql_real_connect()). Parameetri vaikimisi: 28800 sekundit (8 tundi)
MySQL Serveril on maksimaalne ühenduste arv ülemine piir, kuna iga ühendus on loodud ja tarbib mälu, seega eeldame, et kliendid katkestavad ühenduse ja vabastavad hõivatud mälu pärast MySQL Serveriga ühendamist vastava toimingu teostamiseks. Kui sinu MySQL Serveril on palju tühiseisvaid ühendusi, siis nad mitte ainult ei tarbi mälu asjata, vaid kui ühendused kogunevad ja avanevad, jõuavad nad lõpuks MySQL Serveris maksimaalse ühenduste arvuni, mis teatab veateatest 'liiga palju ühendusi'. wait_timeout väärtuse seadmist tuleks hinnata süsteemi toimimise järgi. Kui süsteem on mõnda aega töötanud, saad kontrollida praeguse süsteemi ühenduse staatust käsuga "näita protsessilist"; kui leiad suure hulga ühendatud protsesse unerežiimis, tähendab see, et parameetrite seadistus on liiga suur ja saad teha sobivaid kohandusi, et teha väiksemaid muudatusi.
SQL juhtkond:
See modifikatsioonimeetod onPärast MySQL teenuse taaskäivitamist muutub see kehtetuks, seega on kõige parem seadistada need kaks omadust MySQL seadistusfailis.
Muuda my.cnf faili Linuxis:
|