GNU/Linux >> Tutoriels Linux >  >> Linux

Erreur du serveur MySQL - "Impossible de créer un nouveau fil (errno 11)"

L'erreur 11 du système d'exploitation est "Ressource temporairement indisponible". La cause la plus courante de réception de cette erreur lors de la tentative de création d'un nouveau thread est que le noyau du processus a imposé une limite sur les descripteurs de fichiers ouverts. La deuxième cause la plus fréquente est d'avoir atteint la limite imposée par le noyau du processus sur le nombre de processus/threads.

Voici les facteurs impliqués :

  1. Les limites à l'échelle du système :sysctl -e fs.file-max &&sysctl -e kernel.threads-max
  2. Les limites par processus (dans un *nouveau* shell) :ulimit -n, grep nofile /etc/security/limits.conf et ulimit -u, grep nproc /etc/security/limits.conf.
  3. Le paramètre open_files_limit dans mysqld (mysql> affiche des variables globales comme "open_files_limit" ;).
  4. Les autres paramètres de mysqld qui peuvent affecter le nombre de FD ouverts et de threads que le processus peut utiliser (max_connections, thread_cache_size, table_open_cache, table_definition_cache, innodb_open_files, etc.)

En supposant que c'est en fait que nous avons atteint la limite de fichiers ouverts, qui est par défaut de 1024 sur la plupart des systèmes Linux, nous devrions être en mesure d'éviter le problème en prenant ces mesures :

1. Augmentez la limite de fichiers ouverts explicites dans mysqld en apportant cette modification au fichier my.cnf :

[mysqld]

# Here X could be (max_connections+table_cache)*3  OR you could simply set it very high, for example 32000
open-files-limit = X 

2. Redémarrez le service mysqld :

/etc/init.d/mysql restart

Limites NPROC

S'il apparaît plutôt que la limite nproc est la cause (CentOS 6 met une limite basse à ce sujet dans /etc/security/limits.conf), alors nous pouvons augmenter la limite nproc de différentes manières.

1. Modifier Limits.conf :

Nous pouvons définir les limites pour l'utilisateur mysql dans le fichier limits.conf, par exemple :

mysql soft nproc 10240
mysql hard nproc 40960

Notez que limits.conf ne s'applique qu'aux shells de connexion et n'affecte pas les processus démarrés par init ou systemd. Toute modification apportée à limits.conf ne s'appliquera qu'aux nouvelles connexions, vous devez vous déconnecter et vous reconnecter pour démarrer une nouvelle session.

2. Modifiez le script mysqld_safe :

Nous pouvons aussi simplement ajouter un appel ulimit en haut du script mysqld_safe, par exemple :

$ ulimit -u 40000

3. Utilisez un script wrapper :

Reportez-vous au post ci-dessous sur "Comment utiliser un script wrapper pour définir des attributs personnalisés par processus pour le serveur MySQL".

Comment utiliser un script wrapper pour définir des attributs personnalisés par processus pour le serveur MySQL

Nous devrons redémarrer mysqld pour que les modifications prennent effet.


Linux
  1. Créer un serveur DNS

  2. Créer un nouvel utilisateur et accorder des autorisations dans MySQL

  3. Pitchfork :Créer un serveur

  4. Comment puis-je créer par programmation une nouvelle tâche cron ?

  5. Impossible de se connecter au serveur MySQL erreur 111

Comment créer un nouvel utilisateur administrateur WordPress via MySQL

Comment créer un nouvel utilisateur MySQL via phpMyAdmin

Comment créer une nouvelle base de données et un utilisateur MySQL ?

Comment puis-je créer une nouvelle base de données MySQL dans cPanel ?

Comment créer un nouveau serveur cloud Atlantic.Net

Créer un serveur cloud