Über die Konfigurationsoption
open_files_limit kann festgelegt werden, wieviele gleichzeitig geöffnete Dateien MySQL vorhält. Unter bestimmten Umständen ist diese Zahl zu niedrig und man bekommt Fehler-Codes vom Kernel wie 23 bzw. 24. Diese bedeuten folgendes:
m@bheil.net:~> perror 23
OS error code 23: Too many open files in system
m@bheil.net:~> perror 24
OS error code 24: Too many open files
Es reicht meist nicht aus, nur durch
open_files_limit die Maximal-Anzahl der offenen Dateien in MySQL zu erhöhen, sondern es gibt noch eine Maximalzahl pro Prozess im Kernel selbst. Diese muss ebenfalls angepasst werden. Eine einfache Methode ist,
/etc/init.d/mysql zu bearbeiten und dort eine neue Maximalzahl mit
ulimit anzugeben. Die Datei sieht dann im start-Abschnitt so aus:
case "${1:-''}" in
'start')
sanity_checks;
# Start daemon
log_daemon_msg "Starting MySQL database server" "mysqld"
ulimit -n 4096
Wichtig ist der neue Eintrag
ulimit -n 4096. Dies sorgt dafür, dass jeder einzelne Prozess 4096 Dateien gleichzeitig offen halten kann. Statt 4096 ist hier natürlich die gewünschte Zahl einzutragen.
Das Ganze sorgt dafür, dass die neue Maximal-Zahl immer beim Start von MySQL gesetzt wird. Da root das Skript ausführt, funktioniert das auch. Und da man eigentlich den SQL-Server nicht oft manuell neu startet, ist der Aufruf da gut aufgehoben. Aber natürlich könnte man auch ein eigenes Skript schreiben oder den Aufruf anderswo unterbringen.