Ändern des Open-Files-Limits in MySQL 5.5

9

Ich habe ein Problem mit MySQL 5.5 unter Ubuntu 12.04 mit dem Parameter open-files-limit.

Ich habe kürzlich einige Probleme aufgrund des 1024-Limits festgestellt, und tatsächlich wurde das Hauptsystemlimit auf 1024 festgelegt. Daher habe ich /etc/security/limits.conf wie folgt geändert:

* soft nofile 32000
* hard nofile 32000
root soft nofile 32000
root hard nofile 32000

Danach überprüfe ich den ulimit-Wert für root und sogar für mysql-Benutzer. Beide haben den neuen Wert zurückgegeben: 32000, also gehe ich davon aus, dass die Änderung bereits vorgenommen wurde.

Ich habe auch den Wert in der Datei my.cnf geändert und das Open-Files-Limit wie folgt auf 24000 festgelegt:

open-files-limit    = 24000

Jetzt kommt der seltsame Teil: Wenn ich den MySQL-Dienst neu starte und die Variable open_files_limit überprüfe, wird zurückgegeben, dass sie immer noch auf 1024 festgelegt ist. Daher habe ich dieselben Probleme wie zuvor (offensichtlich), als ich versucht habe, das Open-Files-Limit zu verwenden Stattdessen open_files_limit in der Konfigurationsdatei my.cnf, gleiches Ergebnis, ABER wenn ich den Dienstbefehl überschreibe, um den Dienst zu starten und nur mysqld zu verwenden (keine zusätzlichen Parameter), startet der Dienst und wenn ich den Parameter überprüfe, gibt er 32000 zurück ... Ich weiß nicht, woher dieser Wert stammt, da er nicht auf my.cnf festgelegt ist und zumindest nicht für mich selbst über die Befehlszeile angegeben wird.

Irgendwelche Ideen, warum die Änderung nicht funktioniert und wie sie auf normale Weise gelöst werden kann (Starten durch Service ...)?

Davidv
quelle

Antworten:

9

Ich habe das Problem endlich gefunden. Es scheint, dass upstart die unter /etc/security/limits.conf definierten Parameter nicht verwendet. Wenn ich also mysql über den Dienstbefehl starte (und daher unter upstart), werden diese definierten Grenzwerte und Verwendungen überschrieben die Standardeinstellung 1024.

Die Lösung besteht darin, die Datei mysql.conf zu ändern, die den Upstart-Dienst definiert. Sie befindet sich unter /etc/init/mysql.conf und fügt vor dem Block vor dem Start die folgenden Zeilen hinzu:

# NB: Upstart scripts do not respect
# /etc/security/limits.conf, so the open-file limits
# settings need to be applied here.
limit nofile 32000 32000
limit nproc 32000 32000

Der erste Wert definiert das weiche Limit, der andere das harte Limit. Sobald diese Zeilen hinzugefügt wurden, funktioniert der Dienst wie erwartet und wendet die in der Datei my.conf definierten Werte an.

Diese Einschränkung sollte für jeden Upstart-Dienst gelten, der unter / etc / init definiert ist. Wenn also ein Dienst das gleiche Problem mit dem Limit für geöffnete Dateien hat, sollte diese Lösung auch funktionieren.

Davidv
quelle
1
Gute Arbeit dort!
pkhamre
Dies hat den Trick getan ... Mann, der ein Schmerz war
Chad Scira