it-swarm.com.de

Kann max_open_files für Mysql max-Verbindungen in Ubuntu 15 nicht erhöhen

Ich verwende diese Version von MySQL

Ver 14.14 Distrib 5.6.24, for debian-linux-gnu (x86_64)

Auf dieser Version von Ubuntu

Distributor ID: Ubuntu
Description:    Ubuntu 15.04
Release:    15.04
Codename:   vivid

Dies ist die Konfiguration, die ich für MySQL festgelegt habe:

key_buffer_size     = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8
innodb_buffer_pool_size=20G
innodb_log_buffer_size=16M
tmp_table_size = 32M
max_heap_table_size = 32M
open-files-limit=4510
max_connections=500
myisam-recover         = BACKUP
query_cache_type=1
query_cache_limit   = 32M
query_cache_size        = 32M

Dies sind die Warnungen, die ich immer wieder bekomme, wenn ich MYSQL starte:

2015-06-17 17:28:53 26720 [Warning] Buffered warning: Could not increase number 
of max_open_files to more than 1024 (request: 4510)

2015-06-17 17:28:53 26720 [Warning] Buffered warning: Changed limits: max_connections: 
214 (requested 500)

2015-06-17 17:28:53 26720 [Warning] Buffered warning: Changed limits: table_open_cache: 
400 (requested 2000)

Ich habe bereits diese Schritte ausprobiert:

1) Hinzufügen zu /etc/security/limits.conf

mysql           soft    nofile          65535
mysql           hard    no file          65535

2) Hinzufügen zu /etc/pam.d/common-auth und /etc/pam.d/commom-session

session required pam_limits.so

3) Fügen Sie dies zu /etc/mysql/mysql.conf.d/mysqld.cnf

open-files-limit=4510 or open_files_limit=4510

Keines davon hat funktioniert und ich bin immer noch nicht in der Lage, die MySQL-Max-Verbindungen auf 500 zu erhöhen.

Ich wäre an dieser Stelle sehr dankbar für Hilfe.

Vielen Dank im Voraus.

27
hernangarcia

Ubuntu ist in Version 15.04 von Upstart auf Systemd umgestiegen und beachtet die Beschränkungen in /etc/security/limits.conf für Systemdienste nicht mehr. Diese Beschränkungen gelten jetzt nur für Benutzersitzungen.

Die Limits für den MySQL-Dienst sind in der Systemd-Konfigurationsdatei definiert, die Sie von ihrem Standardspeicherort nach/etc/systemd kopieren und dann bearbeiten sollten.

Sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
Sudo vim /etc/systemd/system/mysql.service # or your editor of choice

Fügen Sie die folgenden Zeilen am Ende der Datei hinzu:

LimitNOFILE=infinity
LimitMEMLOCK=infinity

Sie können auch ein numerisches Limit festlegen, z. B. LimitNOFILE=4510.

Laden Sie nun die Systemd-Konfiguration neu mit:

Sudo systemctl daemon-reload

Starten Sie MySQL neu und es sollte jetzt die max_connections-Direktive befolgen.

Ich hatte auch Probleme, MySQL nach dem Upgrade auf 15.04 sauber zu stoppen. Wenn dies auf Sie zutrifft (Sie werden es wissen, weil es 300 Sekunden dauern wird, bis das Zeitlimit abgelaufen ist, wenn Sie service mysql stop oder service mysql restart) fügte dann die folgende Zeile zur gleichen /etc/systemd/system/mysql.service-Datei hinzu und behebte sie für mich:

ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown

Dieses letztere Problem scheint mit 16.04 behoben worden zu sein und diese Zeile wird nicht mehr benötigt. Bevor Sie ein Distributions-Upgrade durchführen, sollten Sie MySQL stoppen und die Zeile ExecStop aus der Konfigurationsdatei entfernen.

80
Matt Raines

Ab MySQL 5.7.7 wird in der Dokumentation für Red Hat Enterprise Linux 7, Oracle Linux 7, CentOS 7, SUSE Linux Enterprise Server 12, Fedora 24 und 25 Folgendes empfohlen:

https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html

Unter Ubuntu 16.04 heißt der Dienst mysql und nicht mysqld. Deshalb habe ich Folgendes getan:

Sudo mkdir /etc/systemd/system/mysql.service.d
Sudo vi /etc/systemd/system/mysql.service.d/override.conf

Fügte dies in der neuen Datei override.conf hinzu:

[Service]
LimitNOFILE=5000

Dann den Dienst neu gestartet:

Sudo systemctl daemon-reload
Sudo systemctl restart mysql
13
Fredrik

Ich schlage vor, Sie kopieren die vorhandene mysql.service-Datei nicht wie vorgeschlagen, sondern erstellen nur eine Datei mit den Änderungen, die Sie interessieren. Dann mach's:

mkdir /lib/systemd/system/mysql.service.d
vim /etc/systemd/system/mysql.service.d/limits.conf

Und der Inhalt von limits.conf ist einfach:

[Service]
LimitNOFILE=10000
LimitMEMLOCK=10000

oder welche Grenzen Sie bevorzugen.

7
Berend de Boer