Kapitel 3: Installation von MySQL 95
m¨oglich auf Linux 2.4 zu aktualisieren (Upgrade)! Dadurch wird Ihr System ausserdem
schneller und stabiler!
Beachten Sie, dass glibc-Versionen vor und einschließlich Version 2.1.1 einen schweren
Fehler im pThread_mutex_timedwait-Handling haben, was benutzt wird, wenn Sie INSERT
DELAYED verwenden. Wir empfehlen, vor einem Upgrade der glibc INSERT DELAYED nicht
zu verwenden.
Wenn Sie planen, mehr als 1000 gleichzeitige Verbindungen zu haben, m¨ussen
Sie einige
¨
Anderungen an LinuxThreads vornehmen, es neu kompilieren und
mit der neuen ‘libpThread.a’ linken. Setzen Sie PTHREAD_THREADS_MAX in
‘sysdeps/unix/sysv/linux/bits/local_lim.h’ auf 4096 herauf und setzen Sie
STACK_SIZE in ‘linuxThreads/internals.h’ auf 256 KB herunter. Die Pfade sind relativ
zum Wurzelverzeichnis von glibc. Beachten Sie, dass MySQL bei etwa 600 bis 1000
Verbindungen nicht stabil l¨auft, wenn STACK_SIZE auf den Vorgabewert von 2 MB gesetzt
wird.
Wenn Sie Probleme damit bekommen, dass MySQL nicht genug Dateien oder Verbindungen
¨offnen kann, haben Sie m¨oglicherweise Linux nicht so konfiguriert, dass es genug Dateien
handhaben kann.
In Linux 2.2 und Folgenden k¨onnen Sie die Anzahl der allozierten Datei-Handler heraus-
bekommen, wenn Sie folgendes eingeben:
cat /proc/sys/fs/file-max
cat /proc/sys/fs/dquot-max
cat /proc/sys/fs/super-max
Wenn Sie mehr als 16M Speicher haben, sollten Sie etwas
¨
Ahnliches wie folgendes in Ihr
Boot-Skript (‘/etc/rc/boot.local’ auf SuSE) eintragen:
echo 65536 > /proc/sys/fs/file-max
echo 8192 > /proc/sys/fs/dquot-max
echo 1024 > /proc/sys/fs/super-max
Das k¨onnen Sie auch von der Kommandozeile aus als Root eingeben, aber in diesem Fall
werden die alten Beschr¨ankungen wieder benutzt, wenn Sie Ihren Computer neu starten.
Zus¨atzlich sollten Sie in /etc/my.cnf einf¨ugen:
[safe_mysqld]
open-files-limit=8192
Das sollte MySQL erlauben, bis zu 8192 Verbindungen und Dateien zu erzeugen.
Die STACK_SIZE-Konstante in LinuxThreads steuert das Spacing von Thread-Stacks im
Adressraum. Sie muss Groß genug sein, damit reichlich Platz f¨ur den Stack jedes individu-
ellen Threads bleibt, aber klein genug, um den Stack irgend eines Threads davon abzuhal-
ten, mit den globalen mysqld-Daten zu kollidieren. Wie wir durch Experimentieren heraus
fanden, unmappt die Linux-Implementation von mmap() erfolgreich eine bereits gemappte
Region, wenn Sie sie anweisen, eine Adresse auszumappen, die bereits in Benutzung ist,
wobei sie alle Daten der gesamten Seite auf Null setzt, statt einen Fehler zur¨uck zu geben.
Daher beruht die Sicherheit von mysqld oder jeder anderen Thread-Applikation auf dem
"Gentleman"-Verhalten des Codes, der Threads erzeugt. Der Benutzer muss Vorkehrungen
treffen, die sicherstellen, dass die Anzahl laufender Threads jederzeit ausreichend gering
ist, damit die Thread-Stacks sich vom globalen Heap fernhalten. Bei mysqld sollten Sie
Comentarios a estos manuales