GNU/Linux >> Linux Esercitazione >  >> Linux

Risoluzione dell'errore MySQL:troppi file aperti

Introduzione:
Quando ho eseguito l'aggiornamento da Mysql 5.5 a 5.6, improvvisamente alcuni siti mostravano il seguente errore:
...... Too many open files
Il problema ha a che fare con le attuali limitazioni date al sistema e al sistema PAM per aprire un massimo di 1024 file. Dopo aver fatto alcune ricerche ho trovato questo sito qui sotto che è in tedesco in cui è spiegato quanto segue:
https://www.filewalker.de/ulimit-mysql-open_files_limit/

PASSAGGI:
Controlla i limiti di apertura dei file o eseguendo il server mysql:
mysql -p -u root
mysql> SHOW VARIABLES LIKE 'open%';

L'output molto possibile:
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 1024 |
+------------------+-------+
1 row in set (0.00 sec)

Ciò significa che il server Mysql riesce ad aprire al massimo 1024, il che sembra troppo piccolo per Mysql 5.6.

Innalzamento di questo limite
Modifica il file /etc/security/limits.conf e aggiungi le seguenti righe:
mysql hard nofile 65535
mysql soft nofile 65535

Ciò aumenterà il limite di file aperti a 65535 per l'utente mysql solo.
Se desideri aumentare questo limite per tutti gli utenti, sostituisci la parola mysql per *
es.
* hard nofile 65535
* soft nofile 65535

E secondo questo sito modifica il file /etc/pam.d/common-session e aggiungi questa riga alla fine:
session required pam_limits.so
Nota: Tuttavia, non sono sicuro che questo passaggio sia davvero necessario. Alcune persone hanno provato senza di essa e ha anche funzionato. Per me, in Debian Wheezy, dovevo farlo altrimenti continuavo a ricevere l'errore.

Per i sistemi che eseguono systemd invece di InitV, procedi come segue:
Modifica il file /usr/lib/systemd/system/mysqld.service
Aggiungi queste 2 righe alla fine:
LimitNOFILE=65535
LimitNPROC=65535

Riavvia il server Mysql e provalo di nuovo
service mysql restart
mysql -p -u root
mysql>> SHOW VARIABLES LIKE 'open%';

Il risultato speranzoso:
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 65535 |
+------------------+-------+
1 row in set (0.00 sec)

Questo errore non dovrebbe più apparire.


Linux
  1. Troppi errori di connessione in MySQL

  2. Avvio di udev:udevd inotify_init non riuscito:troppi file aperti

  3. Impossibile connettersi all'errore 111 del server MySQL

  4. Conteggio dei file aperti per processo

  5. Troppi livelli di collegamenti simbolici

Importa più file SQL in MySQL

Errore nell'utilizzo di GRANT con IDENTIFIED by password in MySQL

Risoluzione dei problemi:troppi reindirizzamenti

s3cmd fallisce troppe volte

Troppi file aperti (CentOS7) - già provato a impostare limiti più alti

Troppi file aperti su Debian