Si vous obtenez ERROR '...' not found (errno:
23), Can't open file: ... (errno:
24), ou toute autre erreur avec errno
23 ou errno 24 de la part de MySQL,
cela signifie que vous n'avez pas alloué assez de descripteurs
de fichiers à MySQL. Vous pouvez utiliser l'utilitaire
perror pour obtenir une description de ce que
veut dire l'identifiant de l'erreur :
shell>perror 23File table overflow shell>perror 24Too many open files shell>perror 11Resource temporarily unavailable
Le problème ici est que mysqld essaye de
garder trop de fichiers ouverts en même temps. Vous pouvez soit
demander à mysqld de ne pas ouvrir autant de
fichiers simultanément ou augmenter le nombre de descripteurs
de fichiers alloués à mysqld.
Pour dire à mysqld de garder moins de
fichiers ouverts en même temps, vous pouvez rendre le cache de
tables plus petit en utilisant l'option -O
table_cache=32 de safe_mysqld (la
valeur par défaut est 64). Réduire la valeur de
max_connections réduira aussi le nombre de
fichiers ouverts (90 comme valeur de défaut).
Pour changer le nombre de descripteurs de fichiers alloués à
mysqld, vous pouvez utiliser l'option
--open-files-limit=# de
safe_mysqld ou -O
open-files-limit=# de mysqld. See
Section 13.5.3.18, « Syntaxe de SHOW VARIABLES ». La fa¸on la plus facile de
faire cela est d'ajouter cette option dans votre fichiers
d'options. See Section 4.3.2, « Fichier d'options my.cnf ». Si vous avec une
ancienne version de mysqld qui ne le supporte
pas, vous pouvez éditer le script
safe_mysqld. Il y a une ligne commentée
ulimit -n 256 dans le script. Vous pouvez
enlever le caractère ‘#’ pour
décommenter cette ligne, et changer le nombre 256 pour affecter
le nombre de descripteurs de fichiers alloués à
mysqld.
ulimit (et
open-files-limit) peuvent augmenter le nombre
de descripteurs de fichiers, mais seulement jusqu'à la limite
imposée par le système d'exploitation. Il y a aussi une limite
'matérielle' qui ne peut être dépassée que si vous démarrez
safe_mysqld ou mysqld en
tant que root (souvenez-vous juste que vous devez aussi utiliser
l'option --user=... dans ce cas). Si vous avez
besoin de repousser les limites du système d'exploitation pour
les descripteurs de fichiers disponibles pour chaque processus,
consultez la documentation de votre système.
Note : Notez que si vous
démarrez le Shell tcsh,
ulimit ne fonctionnera pas !
tcsh retournera aussi des valeurs incorrectes
si vous atteignez la limite courante ! Dans ce cas, vous devez
démarrer safe_mysqld avec
sh !
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
