MariaDB를 시작할 때 [경고] Max_open_files 수를 1024 이상으로 늘릴 수 없습니다(요청: 4607)라는 메시지가 나타납니다.
$ sudo systemctl status mysqld
● mysqld.service - MariaDB database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled)
Active: activating (start-post) since Tue 2014-08-26 14:12:01 EST; 2s ago
Main PID: 8790 (mysqld); : 8791 (mysqld-post)
CGroup: /system.slice/mysqld.service
├─8790 /usr/bin/mysqld --pid-file=/run/mysqld/mysqld.pid
└─control
├─8791 /bin/sh /usr/bin/mysqld-post
└─8841 sleep 1
Aug 26 14:12:01 acpfg mysqld[8790]: 140826 14:12:01 [Warning] Could not increase number of max_open_files to more than 1024 (request: 4607)
이 파일의 max_open_files 문제를 해결하려고 시도했지만 성공하지 못했습니다.
$ sudo nano /etc/security/limits.conf
mysql hard nofile 8192
mysql soft nofile 1200
컴퓨터를 다시 시작해도 같은 문제가 발생했습니다.
/etc/mysql/my.cnf는 다음과 같습니다:
[mysql]
# CLIENT #
port = 3306
socket = /home/u/tmp/mysql/mysql.sock
[mysqld]
# GENERAL #
user = mysql
default-storage-engine = InnoDB
socket = /home/u/tmp/mysql/mysql.sock
pid-file = /home/u/tmp/mysql/mysql.pid
# MyISAM #
key-buffer-size = 32M
myisam-recover = FORCE,BACKUP
# SAFETY #
max-allowed-packet = 16M
max-connect-errors = 1000000
skip-name-resolve
sql-mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY
sysdate-is-now = 1
innodb = FORCE
innodb-strict-mode = 1
# DATA STORAGE #
datadir = /home/u/tmp/mysql/
# BINARY LOGGING #
log-bin = /home/u/tmp/mysql/mysql-bin
expire-logs-days = 14
sync-binlog = 1
# CACHES AND LIMITS #
tmp-table-size = 32M
max-heap-table-size = 32M
query-cache-type = 0
query-cache-size = 0
max-connections = 500
thread-cache-size = 50
open-files-limit = 65535
table-definition-cache = 1024
table-open-cache = 2048
# INNODB #
innodb-flush-method = O_DIRECT
innodb-log-files-in-group = 2
innodb-log-file-size = 128M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table = 1
innodb-buffer-pool-size = 2G
# LOGGING #
log-error = /home/u/tmp/mysql/mysql-error.log
log-queries-not-using-indexes = 1
slow-query-log = 1
slow-query-log-file = /home/u/tmp/mysql/mysql-slow.log
max_open_files 문제를 해결하는 방법은 무엇입니까?
답변1
/etc/security/limits.conf
다음 줄을 편집 하고 추가하세요.
mysql soft nofile 65535
mysql hard nofile 65535
그런 다음 다시 시작하십시오.
그런 다음 수정 /usr/lib/systemd/system/mysqld.service
하거나 /usr/lib/systemd/system/mariadb.service
추가하세요.
LimitNOFILE=infinity
LimitMEMLOCK=infinity
그런 다음 데이터베이스 서비스를 다시 시작합니다.
systemctl reload mariadb.service
답변2
또 다른 이유:
주의를 기울여야 합니다.table_open_cach
mysql 코드는mysqld.cc
wanted_files= 10 + max_connections + table_cache_size * 2;
더 낮은 table_open_cach
값을 사용해 보세요
답변3
나는 같은 문제를 가지고있다우분투15.10그리고mysql이전 답변에서 수정되었지만 약간의 차이가 있습니다.
/etc/security/limits.conf
위와 같이 변경을 시작했습니다 .
내가 추가했어 (그게 다야)
LimitNOFILE=infinity
도착 /lib/systemd/system/mysql.service
(위치는 크게 다르지 않음)
그리고 그랬어
systemctl daemon-reload
답변4
mariadb.service 파일에서 공식 지침을 볼 수 있습니다.
[[email protected] /]# cat /usr/lib/systemd/system/mariadb.service | grep exam -A 5
# For example, if you want to increase mariadb's open-files-limit to 10000,
# you need to increase systemd's LimitNOFILE setting, so create a file named
# "/etc/systemd/system/mariadb.service.d/limits.conf" containing:
# [Service]
# LimitNOFILE=10000
운영 체제를 다시 시작해야 합니다. 이 내용은 다음과 같이 작성해야 한다고 생각하지만공식 매뉴얼...