it-swarm.com.de

MySQL open_files_limit - kann diese Variable nicht ändern

Ich habe Probleme, weil mein open_files_limit für MySQL ist nur 1024.

Centos 7, MySQL Community Server 5.6.22-Protokoll

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 Betriebssystem open_files_limit für root:

[[email protected] ~]# ulimit -Hn -Sn
open files                      (-n) 100000
open files                      (-n) 100000

Und dann als MySQL-Benutzer:

[[email protected] ~]# su mysql
bash-4.2$ ulimit -Hn -Sn
open files                      (-n) 100000
open files                      (-n) 100000

MySQL-Status:

[[email protected] ~]# 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 wurde, dann gestartet und das gesamte System neu gestartet.

Beweis, dass my.cnf funktioniert:

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

Jetzt steigt hier mein Blutdruck :

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

Was fehlt mir? Gibt es eine andere my.cnf, die meinen Wert überschreibt?

[[email protected] ~]# 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 mir all das angesehen und es gibt keine Erwähnung von open_files_limit. Zum Teufel habe ich grep diese durchgesehen und nach der Einstellung gesucht:

[[email protected] ~]# grep -r "open_files_limit" /etc
/etc/my.cnf:open_files_limit = 100000
/etc/my.cnf:open_files_limit = 100000
[[email protected] ~]# grep -r "open_files_limit" /var
[[email protected] ~]# 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.

17
user24601

Ich musste /usr/lib/systemd/system/mysqld.service Bearbeiten und hinzufügen

LimitNOFILE=infinity
LimitMEMLOCK=infinity

Führen Sie dann systemctl daemon-reload Und systemctl restart mysql.service Aus.

Jetzt ist die Variable aus einem unbekannten Grund auf 65536 Begrenzt, aber damit kann ich vorerst leben.

Gefunden unter https://unix.stackexchange.com/questions/152186/mysql-max-open-files-more-than-1024#answer-15791

19
user24601