GNU/Linux >> Tutoriels Linux >  >> Linux

Résolution de l'erreur Mysql :Trop de fichiers ouverts

Présentation :
Lorsque je suis passé de Mysql 5.5 à 5.6, certains sites affichaient soudainement l'erreur suivante :
...... Too many open files
Le problème est lié aux limitations actuelles du système et du système PAM pour ouvrir un maximum de 1024 fichiers. Après avoir fait quelques recherches, j'ai trouvé ce site ci-dessous qui est en allemand dans lequel ce qui suit est expliqué :
https://www.filewalker.de/ulimit-mysql-open_files_limit/

ÉTAPES :
Vérifiez les limites d'ouverture des fichiers ou exécutez le serveur mysql :
mysql -p -u root
mysql> SHOW VARIABLES LIKE 'open%';

La sortie très possible :
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 1024 |
+------------------+-------+
1 row in set (0.00 sec)

Cela signifie que le serveur Mysql peut ouvrir un maximum de 1024, ce qui semble trop peu pour Mysql 5.6.

Augmentation de cette limite
Editez le fichier /etc/security/limits.conf et ajoutez les lignes suivantes :
mysql hard nofile 65535
mysql soft nofile 65535

Cela augmentera la limite de fichiers ouverts à 65535 pour l'utilisateur mysql uniquement.
Si vous souhaitez augmenter cette limite pour tous les utilisateurs, remplacez le mot mysql pour *
ex.
* hard nofile 65535
* soft nofile 65535

Et selon ce site éditez le fichier /etc/pam.d/common-session et ajoutez cette ligne à la fin :
session required pam_limits.so
Remarque : Je ne suis pas sûr que cette étape soit vraiment nécessaire. Certaines personnes ont essayé sans cela et cela a également fonctionné. Pour moi, dans Debian Wheezy, je devais le faire sinon j'obtenais toujours l'erreur.

Pour les systèmes qui exécutent systemd au lieu d'InitV, procédez comme suit :
Modifiez le fichier /usr/lib/systemd/system/mysqld.service
Ajoutez ces 2 lignes à la fin :
LimitNOFILE=65535
LimitNPROC=65535

Redémarrez le serveur Mysql et testez-le à nouveau
service mysql restart
mysql -p -u root
mysql>> SHOW VARIABLES LIKE 'open%';

Le résultat plein d'espoir :
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 65535 |
+------------------+-------+
1 row in set (0.00 sec)

Cette erreur ne devrait plus apparaître.


Linux
  1. Comment augmenter la limite du nombre de fichiers ouverts sous Linux

  2. Importer plusieurs fichiers SQL dans MySQL

  3. Erreur OpenCA - Longueur de clé symétrique trop courte [Solution]

  4. Erreur lors de l'utilisation de GRANT avec IDENTIFIED by password dans MySQL

  5. Trop d'erreurs de connexions dans MySQL

Dépannage :Trop de redirections

Comment définir les fichiers ouverts nginx max ?

s3cmd échoue trop de fois

Trop de fichiers ouverts (CentOS7) - déjà essayé de définir des limites plus élevées

Trop de niveaux de liens symboliques

Trop de fichiers ouverts sur Debian