우분투 16.04 서버 MySql open_file_limit가 65536보다 높지 않습니다.


16

XenServer에서 Ubuntu 16.04 Server를 실행 중이며 MySql의 열린 파일 제한에 문제가 있습니다.

여기까지 내가 한 일이 있습니다.

sudo nano /etc/security/limits.conf (참조)

* 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 (참조)

limit nofile 1024000 1024000
limit nproc 102400 102400

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf (참조)

[mysqld_safe]
open_files_limit = 1024000


[mysqld]
open_files_limit = 1024000

위의 방법으로 문제가 해결되지 않으면 다음을 진행했습니다.

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

사용자 계정에 로그인하면 모든 것이 잘 보입니다.

ulimit -Hn
1024000
ulimit -Sn
1024000

mysql로 ​​로그인하면 좋아 보인다 :

mysql@server:~$ ulimit -Hn
1024000
mysql@server:~$ ulimit -Sn
1024000

그러나 내가 proc을 볼 때 :

ps -ef | grep mysql
cat /proc/1023/limits | grep open
Max open files  65536 65536 files   

또는 MySql에서 볼 때 :

mysql> show global variables like 'open%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| open_files_limit | 65536 |
+------------------+-------+

로그에서 (/var/log/mysql/error.log) :

2016-07-25T05 : 44 : 35.453668Z 0 [경고] max_open_files 수를 65536 이상으로 늘릴 수 없습니다 (요청 : 1024000).

나는 여기서 완전히 아이디어가 없습니다. 처음에는 1024에서 open_files_limit로 시작했으며 위 중 하나가 변경 되었어야하지만 더 높아야합니다. 때로는 파티션이 많은 데이터베이스와 테이블이 많으므로 이미이 한계에 도달하고 있습니다.

나는 1024000보다 덜 공격적인 숫자를 시도했지만 운이 없었습니다.

어떤 아이디어가 있습니까?

답변:


24

이것은 Ubuntu Xenial 16.04에서 나를 위해 일했습니다.

디렉토리 만들기 /etc/systemd/system/mysql.service.d

넣다 /etc/systemd/system/mysql.service.d/override.conf:

[Service]
LimitNOFILE=1024000

이제 실행

systemctl daemon-reload
systemctl restart mysql.service

예 참으로, LimitNOFILE=infinity실제로는 65536로 설정 보인다.

다음을 수행하여 MySQL을 시작한 후 위의 내용을 확인할 수 있습니다.

cat /proc/$(pgrep mysql)/limits | grep files

1
여기에 처음 왔지만 일부 시스템 파일을 조정하는 것에 약간 불만이 생겼으므로 다음 업그레이드에서 덮어 쓰는 위험 서비스 파일을 수정하는 방법을 설명하는 다른 스레드가 있습니다. stackoverflow.com/questions/27849331/…
Thomas Urban

감사합니다 @cepharum. 나는 대답을 업데이트했다. 실제로 우리는 repo 파일을 업데이트했기 때문에 서버에서 이미 문제가 발생했습니다 /lib/systemd/system/mysql.service. 그래서 우리는 이미 당신이 언급 한 방법으로 옮겼습니다. 나는 여기에서 내 대답을 업데이트하는 것을 잊었다. 알림 주셔서 다시 한 번 감사드립니다.
Jeroen Vermeulen-MageHost

이 명령은 작동하지 않습니다. cat / proc / $ (pgrep mysql) / limits | grep 파일
Basil A

1
@BasilA이 명령은 MySQL이 실행 된 후에 만 ​​작동합니다. 우분투 16.04에서 테스트했습니다.
Jeroen Vermeulen-MageHost
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.