MySQL open_files_limit - kann diese Variable nicht ändern

17

Ich stoße auf Probleme, weil mein nur open_files_limitfür MySQL ist 1024.

Centos 7, MySQL Community Server 5.6.22-log

Es ist eigentlich ein vps für MySQL für einen WHM-Server (Remote-MySQL), aber das sollte nebensächlich sein.


Konfigurationsdateien

my.cnf:

[mysqld]
open_files_limit = 100000
open-files-limit = 100000 #I've read that the dashes are required on older versions, but I threw it in anyway.
innodb_buffer_pool_size = 600M
...

# and the same for mysqld_safe
[mysqld_safe]
open_files_limit = 100000
open-files-limit = 100000
...

/etc/security/limits.conf:

*       hard    nofile  100000
*       soft    nofile  100000

Befehlsausgaben

Mein os open_files_limit für root:

[root@mack ~]# ulimit -Hn -Sn
open files                      (-n) 100000
open files                      (-n) 100000

Und dann als MySQL-Benutzer:

[root@mack ~]# su mysql
bash-4.2$ ulimit -Hn -Sn
open files                      (-n) 100000
open files                      (-n) 100000

MySQL Status:

[root@mack ~]# service mysql status
Redirecting to /bin/systemctl status  mysql.service
mysqld.service - MySQL Community Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled)
   Active: active (running) since Wed 2014-12-24 10:41:09 EST; 40min ago
  Process: 2982 ExecStartPost=/usr/bin/mysql-systemd-start post (code=exited, status=0/SUCCESS)
  Process: 2970 ExecStartPre=/usr/bin/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 2981 (mysqld_safe)
   CGroup: /system.slice/mysqld.service
           ââ2981 /bin/sh /usr/bin/mysqld_safe
           ââ3268 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mysqld.log --open-files-limit=100000 --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/my...

Dec 24 10:41:08 mack systemd[1]: Starting MySQL Community Server...
Dec 24 10:41:09 mack mysqld_safe[2981]: 141224 10:41:09 mysqld_safe Logging to '/var/log/mysqld.log'.
Dec 24 10:41:09 mack mysqld_safe[2981]: 141224 10:41:09 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
Dec 24 10:41:09 mack systemd[1]: Started MySQL Community Server.

Ich habe mysql neu gestartet, gestoppt, den Status überprüft, um sicherzustellen, dass es gestoppt und dann gestartet wurde, und das gesamte System neu gestartet.

Beweise, die my.cnffunktionieren:

mysql> show global variables like '%buffer_pool_size%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| innodb_buffer_pool_size | 629145600 |
+-------------------------+-----------+
1 row in set (0.00 sec)

Hier steigt mein Blutdruck:

mysql> show global variables like 'open%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| open_files_limit | 1024  |
+------------------+-------+
1 row in set (0.00 sec)

Was vermisse ich? Gibt es eine andere my.cnf, die meinen Wert überschreibt?

[root@mack ~]# find / -name "*.cnf"
/usr/share/mysql/my-default.cnf
/usr/share/doc/mysql-community-server-5.6.22/my-default.cnf
/var/lib/mysql/auto.cnf
/etc/my.cnf
/etc/pki/tls/openssl.cnf

Ich habe alle untersucht und es gibt keine Erwähnung von open_files_limit. Zum Teufel würde ich grepdurch diese nach der Einstellung suchen:

[root@mack ~]# grep -r "open_files_limit" /etc
/etc/my.cnf:open_files_limit = 100000
/etc/my.cnf:open_files_limit = 100000
[root@mack ~]# grep -r "open_files_limit" /var
[root@mack ~]# grep -r "open_files_limit" /usr
/usr/share/vim/vim74/syntax/ora.vim:syn keyword oraKeywordUnd     _number_cached_attributes _offline_rollback_segments _open_files_limit
Binary file /usr/sbin/mysqld matches
Binary file /usr/sbin/mysqld-debug matches
Binary file /usr/bin/mysqlbinlog matches
/usr/bin/mysqld_safe:      --open_files_limit=*) open_files="$val" ;;

Aber nein, sie beeinflussen es nicht.

user24601
quelle
1
Hier ist ein Leckerbissen aus dem mysql log während des Neustarts: 2014-12-24 10:41:09 3268 [Warning] Buffered warning: Could not increase number of max_open_files to more than 1024 (request: 100000). Dies muss bedeuten, dass MySQL VERSUCHT, sein Limit zu erhöhen.
user24601

Antworten:

18

Ich musste bearbeiten /usr/lib/systemd/system/mysqld.serviceund hinzufügen

LimitNOFILE=infinity
LimitMEMLOCK=infinity

Dann renne systemctl daemon-reloadund systemctl restart mysql.service.

Jetzt ist die Variable auf 65536einen unbekannten Grund begrenzt, aber damit kann ich vorerst leben.

Dies finden Sie unter /unix/152186/mysql-max-open-files-more-than-1024#answer-157910

user24601
quelle
4
Die Datei / usr / lib / enthält eine Warnung, dass sie nicht bearbeitet werden darf. Für MariaDB auf Centos7 habe ich eine Datei /etc/systemd/system/mariadb.service.d/limits.confmit folgendem Inhalt erstellt [Service] LimitNOFILE=infinity LimitMEMLOCK=infinity
Chris Wheeler