5
votes

Trop de fichiers ouverts avec Mariadb 10.4.13 sur Macos Catalina

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?


3 commentaires

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


5 Réponses :


1
votes

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


0 commentaires

6
votes

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>


2 commentaires

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.



2
votes

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.


3 commentaires

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



2
votes
  • MacOS Catalina 10.15.x
  • Mariadb installé avec homebrew
  • 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
    

1 commentaires

A travaillé pour moi. Merci!



0
votes

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:

  1. port sudo déchargez le serveur mariadb-10.2
  2. sudo port load mariadb-10.2-server

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.


0 commentaires