Betaalmethoden Abuse

Ошибка 2006: MySQL Server is verdwenen

09.03.2021, 22:01

Error 2006 genaamd MySQL Sever has gone away betekent dat de server heeft geweigerd om verbinding te maken, ook al draait hij wel. Er zijn slechts drie bekende redenen waarom de foutmelding verschijnt. De eerste reden is dat de server overbelast is. De wachttijd is verstreken. De tweede reden - de client heeft een pakket verstuurd dat te pijnlijk is. De derde reden is dat de server niet volledig is geïnitialiseerd. Verder zullen we in detail bekijken om welke redenen de foutmelding verschijnt en hoe ermee om te gaan.

De fout oplossen

Meestal verschijnt de foutmelding wanneer je probeert verbinding te maken met de database via PHP, console client of wanneer je PhpMyAdmin gebruikt:

PhpMyAdmin

Laten we elke situatie afzonderlijk bekijken.

Verlopen time-out

Zoals vermeld aan het begin van dit artikel, is een van de mogelijke oorzaken een verlopen wachttijd. Het kan zijn dat de server overbelast is en de belasting - het verwerken van alle verbindingen - niet aankan. Om te begrijpen hoe lang serververzoeken duren, kun je een willekeurige consoleclient gebruiken en verbinding maken met de server. Als dat lukt, voer dan een willekeurig verzoek uit. Als zoekopdrachten te veel tijd kosten om te verwerken, kunt u MySQL optimaliseren met een speciaal script MySQLTuner. Vergroot gewoonlijk de poolgrootte van de InnoDB engine door de parameter innodb_buffer_pool_size in te stellen. De optimale waarde wordt bepaald met het bovenstaande script.

Als het 800 megabytes is (het kan elke andere grootte zijn), stel het dan in:

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

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

Er is nog een andere manier om het probleem op te lossen. Hiervoor wordt de reactietijd van de server verhoogd. Om deze taak uit te voeren, moet je de parameter wait_timeout wijzigen. Dit is de tijd in seconden gedurende welke je moet wachten op een antwoord van de server.

Bijvoorbeeld:

wait_timeout=500

параметр wait_timeout

Als je wijzigingen aanbrengt, vergeet dan niet om de server vervolgens opnieuw op te starten:

$ sudo systemctl restart mysql

Of:

$ sudo systemctl restart mariadb

Te groot pakket

Als de client van een gebruiker te veel pakketten aanmaakt, zal de server deze fout genereren. De beschikbare pakketgrootte (maximumwaarde) kan worden verhoogd met de parameter max_allowed_packet.

Bijvoorbeeld:

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

Let goed op de client, want als deze veel aanvragen verstuurt, doe je duidelijk iets verkeerd. Genereer in ieder geval geen queries naar MySQL met for-lussen.

Server is onjuist geïnitialiseerd

Als u besluit MySQL of MariaDB in Docker te implementeren, wees dan voorbereid om een soortgelijke fout tegen te komen. De initiële initialisatie van de container vereist iets meer vrije tijd. Als je de container de initialisatie niet laat voltooien door hem eerst te stoppen en te starten, zal de database altijd deze fout teruggeven. De oplossing is om de containergegevens volledig uit de database te verwijderen.

Dit doe je als volgt:

$ docker-compose down

of:

$ docker rm mysql-container

Vervolgens moet je de opslag (volume) met de verkeerd geïnitialiseerde database verwijderen. Maar kijk aan het begin door de lijst met alle opslagplaatsen:

$ docker volume ls

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

Na het verwijderen:

$ docker volume rm volume_name

Nu kun je beginnen met het initialiseren van de applicatie, wacht gewoon tot de databaseserver je vertelt dat hij klaar is en je er verbinding mee kunt maken.