Maksutavat Abuse

Ошибка 2006: MySQL Server on kadonnut

09.03.2021, 22:01

Virhe 2006 nimeltään MySQL Sever on hävinnyt tarkoittaa, että palvelin on kieltäytynyt muodostamasta yhteyttä, vaikka se on käynnissä. Tiedetään vain kolme syytä, miksi virhe ilmestyy. Ensimmäinen syy on se, että palvelin on ylikuormittunut. Odotusaika on umpeutunut. Toinen syy - asiakas on lähettänyt liian tuskallisen paketin. Kolmas syy on se, että palvelinta ei ole täysin alustettu. Seuraavaksi tarkastelemme yksityiskohtaisesti, mistä syistä virhe ilmenee ja miten sitä käsitellään.

Virheen korjaaminen

Yleensä virhe tulee näkyviin, kun yrität muodostaa yhteyden tietokantaan PHP:n, konsoliasiakkaan tai PhpMyAdminin käytön yhteydessä:

PhpMyAdmin

Tarkastellaan tarkemmin kutakin tilannetta erikseen.

Aikakatkaisu on päättynyt

Kuten tämän artikkelin alussa mainittiin, yksi mahdollisista syistä on vanhentunut odotusaika. Voi olla, että palvelin oli ylikuormitettu eikä selviydy kuormituksesta - kaikkien yhteyksien käsittelystä. Jos haluat ymmärtää, kuinka kauan palvelimen pyynnöt kestävät, voit käyttää mitä tahansa konsoliasiakasta ja muodostaa yhteyden palvelimeen. Jos pystyt siihen, suorita mikä tahansa pyyntö. Jos kyselyjen käsittely kestää liian kauan, voit optimoida MySQL:ää käyttämällä erityistä skriptiä MySQLTuner. Lisää yleensä InnoDB-moottorin poolin kokoa asettamalla parametri innodb_buffer_pool_size. Optimaalinen arvo määritetään edellä mainitun skriptin avulla.

Jos se on 800 megatavua (se voi olla mikä tahansa muu koko), aseta se:

$ sudo vi /etc/mysql/my.cnf
innodb_buffer_pool_size=800M

https://pq.hosting/help/myfiles/mysqlhasgoneavay-991x576.png

On toinenkin tapa ratkaista ongelma. Tätä varten palvelimen vasteaikaa kasvatetaan. Tätä tehtävää varten on muutettava wait_timeout-parametria. Tämä on sekunteina ilmaistu aika, jonka aikana palvelimelta on odotettava vastausta.

Esim:

wait_timeout=500

параметр wait_timeout

Kun teet muutoksia, älä unohda käynnistää palvelinta seuraavaksi uudelleen:

$ sudo systemctl restart mysql

Tai:

$ sudo systemctl restart mariadb

Liian suuri paketti

Kun käyttäjän asiakasohjelma luo liian suuria paketteja, palvelin tuottaa tämän virheen. Käytettävissä olevaa pakettikokoa (enimmäisarvo) voidaan kasvattaa parametrilla max_allowed_packet.

Esim:

$ sudo vi /etc/mysql/my.cnf
max_allowed_packet=128M

Kiinnitä erityistä huomiota asiakkaaseen, sillä jos se lähettää paljon pyyntöjä, teet ilmeisesti jotain väärin. Älä ainakaan luo kyselyjä MySQL:lle for-silmukoita käyttäen.

Palvelin on alustettu väärin

Jos päätät ottaa MySQL:n tai MariaDB:n käyttöön Dockerissa, varaudu kohtaamaan samanlainen virhe. Kontin alustaminen vaatii hieman enemmän vapaa-aikaa. Jos et anna kontin suorittaa alustusta loppuun pysäyttämällä ja käynnistämällä sitä ensin, tietokanta palauttaa aina tämän virheen. Ratkaisu on poistaa kontin tiedot kokonaan tietokannasta.

Tämä tehdään näin:

$ docker-compose down

tai:

$ docker rm mysql-container

Seuraavaksi on poistettava tallennustila (volume), jossa on virheellisesti alustettu tietokanta. Mutta katso aluksi läpi kaikkien tallennustilojen luettelo:

$ docker volume ls

СЕРВЕР НЕВЕРНО ПРОИНИЦИАЛИЗИРОВАН

Poistamisen jälkeen:

$ docker volume rm volume_name

Nyt voit aloittaa sovelluksen alustamisen, odota vain, kunnes tietokantapalvelin ilmoittaa, että se on valmis ja voit muodostaa siihen yhteyden.