Ho un sistema FreeBSD 8 che esegue ZFS, con un server MySQL 5.5 che è di circa 355 GB e dovrebbe diventare un paio di Terabyte.
MySQL sta attivando errori relativi a "Troppi file aperti" su /etc/hosts.allow. Non usiamo espressamente /etc/hosts.allow, ma viene utilizzato da hosts_access (3) ( libwrap.a), che viene utilizzato da molte cose.
mysqld[1234]: warning: /etc/hosts.allow, line 15: cannot open /etc/hosts.allow: Too many open files
Ma quando controllo, sembra che non stia colpendo alcun limite reale. Il numero di file aperti riportato da kern.openfiles staysmeno di 40.000 in un periodo prolungato e il nostro limite è sostanzialmente più elevato:
# sysctl -a |grep files
kern.maxfiles: 204800
kern.maxfilesperproc: 184320
kern.openfiles: 38191
# ulimit -n
184320
Openfile dovrebbe essere impostato su illimitato:
# grep openfiles /etc/login.conf
:openfiles=unlimited:\
MySQL afferma che dovrebbe essere in grado di aprire handle di file 184320:
# mysqladmin variables | grep open_files_limit
| open_files_limit | 184320 |
E alcune informazioni dal punto di vista dell'utente MySQL. Ho smesso di mysql e hackerato /usr/local/etc/rc.d/mysql-serverper stampare queste variabili, quindi questo dovrebbe rappresentare l'ambiente MySQL. Si noti che il numero 184320 è coerente con quanto sopra.
# /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
E, per un facile riferimento, ecco le descrizioni dei sistemi:
kern.maxfiles: Maximum number of files
kern.openfiles: System-wide number of open files
kern.maxfilesperproc: Maximum files allowed open per process
Relazionato
- Ciò è probabilmente correlato a una domanda ZFS su Nexenta su ServerFault: Perché MySQL non è in grado di aprire hosts.allow / hosts.deny?
- Vedi anche questo problema simile sui forum di FreeBSD: [EMFILE] Troppi file aperti
ulimitnello script di avvio o nell'ambiente shell, ma ciò richiederebbe l'interruzione del database.
cat limitsvedere con cosa sta funzionando mysql. Puoi anche cambiarli al volo (con i kernel più recenti): echo -n "Max open files=soft_value:hard_value" > /proc/$PID/limits(come root ovviamente)
/procnon è montato di default su FreeBSD, ma fallo tu stesso sudo mount -t procfs proc /proc, vedi procfs(5)per maggiori informazioni. Una volta /procmontato, guarda il /proc/$PID/rlimitfile