Ich führe Ubuntu 16.04 Server auf XenServer aus und habe ein Problem mit dem Open File Limit von MySql.
Folgendes habe ich bisher getan:
sudo nano /etc/security/limits.conf (Referenz)
* soft nofile 1024000
* hard nofile 1024000
* soft nproc 102400
* hard nproc 102400
mysql soft nofile 1024000
mysql hard nofile 1024000
sudo nano /etc/init/mysql.conf (Referenz)
limit nofile 1024000 1024000
limit nproc 102400 102400
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf (Referenz)
[mysqld_safe]
open_files_limit = 1024000
[mysqld]
open_files_limit = 1024000
Als das oben genannte nicht funktionierte, fuhr ich mit folgendem fort:
sudo nano /etc/sysctl.conf
fs.file-max = 1024000
sudo nano /etc/pam.d/common-session
session required pam_limits.so
sudo nano /etc/pam.d/common-session-noninteractive
session required pam_limits.so
sudo nano /lib/systemd/system/mysql.service
LimitNOFILE=infinity
LimitMEMLOCK=infinity
Wenn ich mich in meinem Benutzerkonto anmelde, scheint alles in Ordnung zu sein:
ulimit -Hn
1024000
ulimit -Sn
1024000
Wenn ich mich als mysql anmelde, sieht es auch gut aus:
mysql@server:~$ ulimit -Hn
1024000
mysql@server:~$ ulimit -Sn
1024000
Wenn ich mir jedoch den Prozess anschaue:
ps -ef | grep mysql
cat /proc/1023/limits | grep open
Max open files 65536 65536 files
Oder wenn ich es mir in MySql ansehe:
mysql> show global variables like 'open%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 65536 |
+------------------+-------+
Aus den Protokollen (/var/log/mysql/error.log):
2016-07-25T05: 44: 35.453668Z 0 [Warnung] Die Anzahl der max_open_files konnte nicht auf mehr als 65536 erhöht werden (Anforderung: 1024000).
Mir fehlen hier die Ideen. Am Anfang habe ich mit open_files_limit um 1024 angefangen, und einer der oben genannten muss es geändert haben, aber ich brauche es, um höher zu gehen. Ich überschreite diese Grenze bereits, da ich viele Datenbanken und Tabellen habe, die manchmal viele Partitionen haben.
Ich habe sogar versucht, Zahlen weniger aggressiv als 1024000, ohne Glück.
Irgendwelche Ideen da draußen?
quelle
/lib/systemd/system/mysql.service
. Wir sind also bereits zu der Methode übergegangen, auf die Sie sich bezogen haben. Ich habe vergessen, meine Antwort hier zu aktualisieren. Nochmals vielen Dank für die Erinnerung.