J'ai un système FreeBSD 8 exécutant ZFS, avec un serveur MySQL 5.5 qui fait environ 355 Go et devrait atteindre quelques téraoctets.
MySQL déclenche des erreurs concernant "Trop de fichiers ouverts" sur /etc/hosts.allow
. Nous n'utilisons pas expressément /etc/hosts.allow
, mais il est utilisé par hosts_access (3) ( libwrap.a
), qui est utilisé par beaucoup de choses.
mysqld[1234]: warning: /etc/hosts.allow, line 15: cannot open /etc/hosts.allow: Too many open files
Mais quand je vérifie, il semble ne pas atteindre de limites réelles. Le nombre de fichiers ouverts signalés par kern.openfiles stays
moins de 40 000 sur une période prolongée, et notre limite est considérablement plus élevée:
# sysctl -a |grep files
kern.maxfiles: 204800
kern.maxfilesperproc: 184320
kern.openfiles: 38191
# ulimit -n
184320
Les fichiers ouverts doivent être définis sur un nombre illimité:
# grep openfiles /etc/login.conf
:openfiles=unlimited:\
MySQL dit qu'il devrait pouvoir ouvrir les descripteurs de fichiers 184320:
# mysqladmin variables | grep open_files_limit
| open_files_limit | 184320 |
Et quelques informations du point de vue de l'utilisateur MySQL. J'ai arrêté mysql et piraté /usr/local/etc/rc.d/mysql-server
pour imprimer ces variables, donc cela devrait représenter l'environnement MySQL. Notez que le nombre 184320 est cohérent avec ce qui précède.
# /usr/local/etc/rc.d/mysql-server.stefantest start
Starting mysql.
cpu time (seconds, -t) unlimited
file size (512-blocks, -f) unlimited
data seg size (kbytes, -d) 33554432
stack size (kbytes, -s) 524288
core file size (512-blocks, -c) unlimited
max memory size (kbytes, -m) unlimited
locked memory (kbytes, -l) unlimited
max user processes (-u) 5547
open files (-n) 184320
virtual mem size (kbytes, -v) unlimited
swap limit (kbytes, -w) unlimited
sbsize (bytes, -b) unlimited
pseudo-terminals (-p) unlimited
Et, pour une référence facile, voici les descriptions des sysctls:
kern.maxfiles: Maximum number of files
kern.openfiles: System-wide number of open files
kern.maxfilesperproc: Maximum files allowed open per process
en relation
- Ceci est peut-être lié à une question ZFS sur Nexenta sur ServerFault: Pourquoi MySQL ne peut-il pas ouvrir hosts.allow / hosts.deny?
- Consultez également ce problème similaire sur les forums FreeBSD: [EMFILE] Trop de fichiers ouverts
ulimit
dans le script de démarrage ou l'environnement shell, mais cela nécessiterait que j'interrompe la base de données.
cat limits
voir avec quoi mysql fonctionne. Vous pouvez également les changer à la volée (avec les noyaux plus récents): echo -n "Max open files=soft_value:hard_value" > /proc/$PID/limits
(en tant que root bien sûr)
/proc
n'est pas monté par défaut sur FreeBSD, mais faites-le vous-même avec sudo mount -t procfs proc /proc
, voir procfs(5)
pour plus d'informations. Une fois que vous avez /proc
monté, regardez le /proc/$PID/rlimit
fichier