Ich habe ein FreeBSD 8-System mit ZFS und einem MySQL 5.5-Server mit etwa 355 GB, der voraussichtlich auf einige Terabyte anwachsen wird.
MySQL löst Fehler bezüglich "Zu viele geöffnete Dateien" aus /etc/hosts.allow
. Wir verwenden nicht ausdrücklich /etc/hosts.allow
, aber es wird von hosts_access (3) ( libwrap.a
) verwendet, das von vielen Dingen verwendet wird.
mysqld[1234]: warning: /etc/hosts.allow, line 15: cannot open /etc/hosts.allow: Too many open files
Aber wenn ich nachschaue, scheine ich keine tatsächlichen Grenzen zu erreichen. Die Anzahl der geöffneten Dateien wurde kern.openfiles stays
über einen längeren Zeitraum um weniger als 40.000 gemeldet , und unser Limit ist wesentlich höher:
# sysctl -a |grep files
kern.maxfiles: 204800
kern.maxfilesperproc: 184320
kern.openfiles: 38191
# ulimit -n
184320
Openfiles sollten auf unbegrenzt gesetzt werden:
# grep openfiles /etc/login.conf
:openfiles=unlimited:\
MySQL sagt, es sollte in der Lage sein, 184320-Dateihandles zu öffnen:
# mysqladmin variables | grep open_files_limit
| open_files_limit | 184320 |
Und einige Informationen aus der Sicht des MySQL-Benutzers. Ich habe /usr/local/etc/rc.d/mysql-server
MySQL gestoppt und gehackt , um diese Variablen auszudrucken, daher sollte dies die MySQL-Umgebung darstellen. Beachten Sie, dass die Nummer 184320 mit der obigen übereinstimmt.
# /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
Und zum einfachen Nachschlagen hier die Beschreibungen für die Systeme:
kern.maxfiles: Maximum number of files
kern.openfiles: System-wide number of open files
kern.maxfilesperproc: Maximum files allowed open per process
verbunden
- Dies hängt möglicherweise mit einer ZFS on Nexenta-Frage zu ServerFault zusammen: Warum kann MySQL hosts.allow / hosts.deny nicht öffnen?
- Siehe auch dieses ähnliche Problem in den FreeBSD-Foren: [EMFILE] Zu viele geöffnete Dateien
ulimit
im Startskript oder in der Shell-Umgebung festlegen kann , aber dafür müsste ich die Datenbank unterbrechen.
cat limits
sehen, mit was MySQL läuft. Sie können sie auch im echo -n "Max open files=soft_value:hard_value" > /proc/$PID/limits
/proc
wird nicht standardmäßig unter FreeBSD gemountet, aber machen Sie es selbst mit sudo mount -t procfs proc /proc
, siehe procfs(5)
für weitere Informationen. Sobald Sie /proc
gemountet haben, schauen Sie sich /proc/$PID/rlimit
Datei