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 nuovoservice 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.