MySQL open_files_limit - không thể thay đổi biến này


17

Tôi đang gặp vấn đề vì chỉ open_files_limitdành cho mysql 1024.

Centos 7, Máy chủ Cộng đồng MySQL 5.6.22-log

Đây thực sự là một vps dành riêng cho mysql cho máy chủ WHM (mysql từ xa), nhưng điều đó nên nằm bên cạnh điểm.


Cấu hình tập tin

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

Đầu ra lệnh

Os của tôi open_files_limit cho root:

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

Và sau đó là người dùng mysql:

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

Trạng thái MySQL:

[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.

Tôi đã khởi động lại mysql, dừng lại, kiểm tra trạng thái để chắc chắn rằng nó đã dừng, sau đó khởi động nó và khởi động lại toàn bộ hệ thống.

Bằng chứng my.cnfhoạt động:

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

Bây giờ đây là lúc huyết áp của tôi tăng cao:

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

Tôi đang thiếu gì? Có một my.cnf khác ghi đè giá trị của tôi?

[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

Tôi đã xem xét tất cả những thứ đó và không có đề cập đến open_files_limit. Đối với cái quái gì đó, tôi grepthông qua việc tìm kiếm các thiết lập:

[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" ;;

Nhưng không, họ không ảnh hưởng đến nó.


1
Đây là một mẩu tin từ nhật ký mysql trong khi khởi động lại : 2014-12-24 10:41:09 3268 [Warning] Buffered warning: Could not increase number of max_open_files to more than 1024 (request: 100000). Điều này có nghĩa là MySQL đang THỬ để tăng giới hạn của nó.
user24601

Câu trả lời:


18

Tôi cần chỉnh sửa /usr/lib/systemd/system/mysqld.servicevà thêm

LimitNOFILE=infinity
LimitMEMLOCK=infinity

Sau đó chạy systemctl daemon-reloadsystemctl restart mysql.service.

Bây giờ biến được giới hạn ở 65536một số lý do chưa biết, nhưng tôi có thể sống với điều đó ngay bây giờ.

Tìm thấy cái này tại /unix/152186/mysql-max-open-files-more-than-1024#answer-157910


4
Tệp / usr / lib / chứa cảnh báo không chỉnh sửa tệp. Đối với MariaDB trên Centos7, tôi đã tạo một tệp /etc/systemd/system/mariadb.service.d/limits.confvới nội dung sau [Service] LimitNOFILE=infinity LimitMEMLOCK=infinity
Chris Wheeler
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.