Sur les serveurs MySQL très chargés, l’augmentation de table_cache et max_connections est nécessaire et inévitable. Cependant, rendu à un certain point, le nombre de fichiers ouverts par MySQL dépassera la limite maximale définie par open_files_limit. Ces erreurs apparaitront donc dans votre fichier log MySQL: (erreur tirée d’un serveur MySQL 4.1.18)
[ERROR] /usr/local/mysql/bin/mysqld: Can't find file: './your_database/some_table.frm' (errno: 24)
Note: Le message d’erreur a été ajusté à partir de MySQL 5.0.19 pour afficher “Could not open file (errno: 24)”. (voir référence)
Il faudra donc l’augmenter dans le fichier de configuration my.cnf:
[mysqld]
open_files_limit = 16384
Redémarrez MySQL afin d’appliquer la nouvelle limite. Vous pouvez confirmer le changement ainsi:
mysql> SHOW VARIABLES LIKE 'open_files_limit';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 16384 |
+------------------+-------+
1 row in set (0.00 sec)
Référence: http://dev.mysql.com/doc/refman/5.0/fr/not-enough-file-handles.html