je suis sous Macos 10.15.5, avec mariadb 10.4.13. Depuis que j'ai fait la «mise à niveau de la bière», j'ai cette erreur: Out of resources when opening file './pluto/_connection.MYD' (Errcode: 24 "Too many open files")
J'ai essayé de modifier ce fichier /usr/local/etc/my.cnf pour ajouter cette ligne open_files_limit = 60000
mais cela ne fonctionne pas, variable open_files_limit toujours bloquée sur la valeur 256.
J'ai essayé cette ligne: sudo ulimit -n 1024
, mais à chaque fois que je redémarre la valeur revient à 256
Avez-vous de l'aide à m'apporter pour m'aider à résoudre mon problème?
5 Réponses :
J'ai pu résoudre ce problème en augmentant les limites du système en suivant les suggestions indiquées dans ce fil: https://discourse.brew.sh/t/mariadb-too-many-open-files/8110 et décrites dans le GIST ici: https://gist.github.com/tombigel/d503800a282fcadbee14b537735d202c
Avez-vous essayé de rechercher d'autres moyens de modifier la limite de fichiers ouverts sur MacOS Catalina? Une recherche rapide m'a conduit à ici qui suggère ce qui suit pour le modifier pour le système pendant qu'il est en cours d'exécution:
sudo chown root:wheel /Library/LaunchDaemons/limit.maxfiles.plist sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist launchctl limit maxfiles
Ce site et cette question de super-utilisateur suggèrent de modifier /Library/LaunchDaemons/limit.maxfiles.plist
pour l'augmenter de manière permanente.
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>limit.maxfiles</string> <key>ProgramArguments</key> <array> <string>launchctl</string> <string>limit</string> <string>maxfiles</string> <string><your soft limit here></string> <string><your hard limit here></string> </array> <key>RunAtLoad</key> <true/> <key>ServiceIPC</key> <false/> </dict> </plist>
Ensuite, terminez en modifiant les autorisations et en vérifiant le changement.
sudo launchctl limit maxfiles <soft limit> <hard limit>
Je devais le faire de cette façon. Travaux!
Quelles limites faut-il utiliser? J'ai essayé 500/1000 en pensant que c'était par application et j'ai eu un crash de macos: D a été forcé de supprimer ce fichier en mode de récupération, car rien ne fonctionnait.
Je résolvais le même problème sur MacOS après la mise à niveau de 10.15.5 à 10.15.6, mariadb installé via homebrew, version 10.5.5.
Il s'avère que le problème n'est pas la limite des fichiers ouverts, mais le manque d'autorisations pour créer un fichier PID.
Pour résoudre ce problème, j'ai créé ~/.my.cnf
fichier ~/.my.cnf
avec le contenu suivant.
mkdir /var/run/mysqld touch /var/run/mysqld/mysqld.pid chown -R mysql:mysql /var/run/mysqld
Et créez le fichier mysqld.pid
en utilisant les commandes suivantes (tirées de ce problème de serverfault )
[mysqld_safe] pid-file = /var/run/mysqld/mysqld.pid
Cela a réglé le problème. MySQL / MariaDB ne se plaint plus d'ouvrir trop de fichiers.
J'avais également besoin de tuer tous les processus mysql en cours d'exécution (pour obtenir les PID, exécutez ps aux | grep mysql
puis kill {proces_number}
. Mais peut-être que vous n'avez pas besoin de cette étape.
Cela ne fonctionne pas (Errcode: 24 "Too many open files")' when trying to dump tablespaces
sur Catalina 10.15.6, j'utilisais mysqldump
Merci! Celui-ci a fonctionné pour moi. J'ai installé MariaDB avec homebrew, j'ai ajouté les lignes [mysqld_safe]...
dans /usr/local/etc/my.cnf
et brew services restart mariadb
exécuté les brew services restart mariadb
... brew services restart mariadb
attendu 15 secondes après qu'il ait été redémarré, j'ai rafraîchi la page et ne plus caler avec cette erreur dans le journal.
TY, fonctionne bien. Mais les services de brassage fonctionnent en tant qu'utilisateur, vous avez donc besoin de chown -R username:staff /var/run/mysqld
ou utilisez le /usr/local/var/run/mysqld
L'importation de la base de données avec mysql < foo.sql
échoue avec: [ERROR] Error in accept: Too many open files
D'accord avec les messages ci-dessus. Cela ressemble à un faux négatif. C'est ce qui a fonctionné pour moi:
brew services start mariadb
Et assurez-vous qu'aucun processus mysql n'est en cours d'exécution: ps aux | grep mysql
.
[client-server] socket = /usr/local/var/run/mysqld/mysql.sock [mysqld_safe] pid-file = /usr/local/var/run/mysqld/mysqld.pid
Modifiez le fichier de configuration Mariadb /usr/local/etc/my.cnf
et indiquez-lui d'utiliser ce répertoire.
mkdir /usr/local/var/run/mysqld
À proprement parler, vous n'avez besoin que de définir le fichier pid, bien que j'aime personnellement stocker les fichiers pid et socket dans la structure /usr/local/var/run
. Je fais de même pour PHP (/ usr / local / var / run / php) installé depuis Homebrew.
Démarrez votre serveur de base de données et vous avez terminé.
brew services stop mariadb
A travaillé pour moi. Merci!
J'ai eu le même problème en utilisant mariadb-10.2 installé via Macports sur macOS 10.15.7. Vérifier open_files_limit montre qu'il est revenu pour une raison inconnue à 256. J'avais essayé plusieurs des méthodes décrites dans cette question et ailleurs; y compris s'assurer que ulimit est adéquat (20000) et que la limite de launchctl maxfiles est adéquate (20000 et 200000), et dans my.cnf il y a un réglage raisonnable pour open_file_limit (3000) Ces paramètres restent à ces valeurs et ne sont pas modifiés lorsque mariadb revient à 256 mais reste aux valeurs attendues.
Ce n'est pas une solution à la cause profonde, mais une solution de contournement consiste à redémarrer mariadb. Après cela, open_files_limit pour mariadb est réinitialisé à l'ulimit de 20000. Notez qu'il n'est pas défini sur la valeur 3000 dans my.cnf mais sur la valeur 20000. Cela résout le problème pendant un certain temps.
Notez également que pour mariadb installé à partir de MacPorts, la façon de redémarrer est donnée par les deux commandes suivantes:
Cela ne fonctionnera pas de simplement effectuer le chargement, même si la sortie de la console indique qu'elle a été redémarrée. Il peut être redémarré mais j'ai prouvé que la seule façon dont open_files_limit est réinitialisé est de faire d'abord le déchargement.
Je rencontre exactement le même problème. Cela a rendu ma MariaDB inutile. Je ne peux rien exécuter. J'ai essayé d'ajouter ceci à my.cnf, mais ne semble pas fonctionner. Avez-vous trouvé une solution? [mysqld_safe] open_files_limit = 1024
même problème ici! la limite est de 256 et je ne peux pas la changer
Même problème après la mise à niveau vers Catalina 10.15.7 avec mariadb 10.2. show variables avait open_files_limit = 256. J'ai joué avec les paramètres, et d'une manière ou d'une autre, cela a été changé en 20000, qui se trouve être l'ulimit logiciel. Il semble que mariadb ignore les valeurs my.cnf et prend des valeurs ulimit, mais je ne peux pas contrôler cela, car tous les paramètres sont revenus à ce qu'ils étaient avant que le problème ne se produise. Le scénario semble être (1) open_files_limit est mis à 256 pour une raison inconnue: (2) tweak my.cnf mais n'apporte aucun changement réel; (3) redémarrer maraidb; (4) parcourez les étapes 2 et 3 jusqu'à ce que open_files_limit soit 20000.Odd