Metodi di pagamento Abuse

Ошибка 2006: MySQL Server è scomparso

09.03.2021, 22:01

L'errore 2006 chiamato MySQL Sever è sparito significa che il server ha rifiutato di connettersi anche se è in funzione. Ci sono solo tre ragioni note per cui l'errore appare. Il primo motivo è che il server è sovraccarico. Il tempo di attesa è scaduto. Il secondo motivo è che il client ha inviato un pacchetto troppo doloroso. Il terzo motivo è che il server non è stato completamente inizializzato. Di seguito esamineremo in dettaglio i motivi per cui l'errore viene visualizzato e come risolverlo.

Come risolvere l'errore

Di solito l'errore compare quando si cerca di connettersi al database utilizzando PHP, il client della console o in caso di utilizzo di PhpMyAdmin:

PhpMyAdmin

Esaminiamo separatamente ogni situazione.

Timeout scaduto

Come accennato all'inizio di questo articolo, una delle possibili cause è il tempo di attesa scaduto. Può darsi che il server sia sovraccarico e non riesca a far fronte al carico - elaborando tutte le connessioni. Per capire quanto tempo impiegano le richieste del server, è possibile utilizzare un qualsiasi client di console e connettersi al server. Se si riesce a farlo, eseguire qualsiasi richiesta. Se l'elaborazione delle query richiede troppo tempo, è possibile ottimizzare MySQL utilizzando uno speciale script MySQLTuner. Di solito si aumenta la dimensione del pool del motore InnoDB impostando il parametro innodb_buffer_pool_size. Il valore ottimale viene determinato con lo script di cui sopra.

Se è 800 megabyte (può essere qualsiasi altra dimensione), impostatelo:

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

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

Esiste un altro modo per risolvere il problema. A questo scopo, si aumenta il tempo di risposta del server. Per eseguire questa operazione, è necessario modificare il parametro wait_timeout. Si tratta del tempo in secondi durante il quale si deve attendere una risposta dal server.

Ad esempio:

wait_timeout=500

параметр wait_timeout

Quando si apportano modifiche, non dimenticare di riavviare il server:

$ sudo systemctl restart mysql

Oppure:

$ sudo systemctl restart mariadb

Pacchetto troppo grande

Quando il client di un utente crea troppi pacchetti, il server genera questo errore. La dimensione del pacchetto disponibile (valore massimo) può essere aumentata utilizzando il parametro max_allowed_packet.

Ad esempio:

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

Prestare particolare attenzione al client, perché se invia molte richieste, è evidente che si sta facendo qualcosa di sbagliato. Perlomeno, non generate query a MySQL utilizzando cicli for.

Il server è inizializzato in modo errato

Se decidete di distribuire MySQL o MariaDB in Docker, preparatevi a incontrare un errore simile. L'inizializzazione del contenitore richiede un po' più di tempo libero. Se non si lascia che il contenitore completi l'inizializzazione fermandolo e avviandolo prima, il database restituirà sempre questo errore. La soluzione è rimuovere completamente i dati del contenitore dal database.

Si procede in questo modo:

$ docker-compose down

oppure:

$ docker rm mysql-container

Successivamente, è necessario eliminare lo storage (volume) con il database inizializzato in modo errato. All'inizio, però, si deve scorrere l'elenco di tutti gli archivi:

$ docker volume ls

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

Dopo l'eliminazione:

$ docker volume rm volume_name

Ora si può iniziare a inizializzare l'applicazione, aspettando che il server di database dica che è pronto e che ci si può connettere.