programing

Ubuntu 15에서 Mysql max-connections에 대해 max_open_files를 증가시킬 수 없음

muds 2023. 9. 23. 23:09
반응형

Ubuntu 15에서 Mysql max-connections에 대해 max_open_files를 증가시킬 수 없음

이 버전의 Mysql을 실행하고 있습니다.

Ver 14.14 Distrib 5.6.24, for debian-linux-gnu (x86_64)

이 Ubuntu 버전에서

Distributor ID: Ubuntu
Description:    Ubuntu 15.04
Release:    15.04
Codename:   vivid

Mysql에 대해 설정한 구성입니다.

key_buffer_size     = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8
innodb_buffer_pool_size=20G
innodb_log_buffer_size=16M
tmp_table_size = 32M
max_heap_table_size = 32M
open-files-limit=4510
max_connections=500
myisam-recover         = BACKUP
query_cache_type=1
query_cache_limit   = 32M
query_cache_size        = 32M

다음은 MYSQL을 시작할 때 계속 발생하는 경고입니다.

2015-06-17 17:28:53 26720 [Warning] Buffered warning: Could not increase number 
of max_open_files to more than 1024 (request: 4510)

2015-06-17 17:28:53 26720 [Warning] Buffered warning: Changed limits: max_connections: 
214 (requested 500)

2015-06-17 17:28:53 26720 [Warning] Buffered warning: Changed limits: table_open_cache: 
400 (requested 2000)

이미 다음 단계를 시도했습니다.

1) 에 추가하기/etc/security/limits.conf

mysql           soft    nofile          65535
mysql           hard    no file          65535

2) 에 추가하기/etc/pam.d/common-auth그리고./etc/pam.d/commom-session

session required pam_limits.so

3) 추가할 위치/etc/mysql/mysql.conf.d/mysqld.cnf

open-files-limit=4510 or open_files_limit=4510

이 중 어떤 것도 작동하지 않았고 나는 여전히 mysql max connections를 500으로 올릴 수 없습니다.

이 시점에서 도움을 주시면 정말 감사하겠습니다.

미리 감사드립니다.

Ubuntu는 버전 15.04에서 Upstart에서 Systemd로 이동했으며 시스템 서비스의 /etc/security/limits.conf의 제한을 더 이상 존중하지 않습니다.이제 이러한 제한은 사용자 세션에만 적용됩니다.

MySQL 서비스에 대한 제한은 Systemd 구성 파일에 정의되어 있으며, 기본 위치에서 /etc/systemd로 복사한 다음 복사를 편집해야 합니다.

sudo cp /lib/systemd/system/mysql.service /etc/systemd/system/
sudo vim /etc/systemd/system/mysql.service # or your editor of choice

파일 하단에 다음 줄을 추가합니다.

LimitNOFILE=infinity
LimitMEMLOCK=infinity

숫자 제한을 설정할 수도 있습니다. 예:LimitNOFILE=4510.

이제 Systemd 구성을 다음과 같이 다시 로드합니다.

sudo systemctl daemon-reload

MySQL을 다시 시작하면 이제 max_connections 지시를 따라야 합니다.

15.04로 업그레이드한 후 MySQL을 깨끗하게 중지하는 문제도 있었습니다.이것이 여러분에게 영향을 준다면 (시간이 300초나 걸리므로 알 수 있을 것입니다)service mysql stop아니면service mysql restart) 그런 다음 동일한 /etc/systemd/system/mysql.service 파일에 다음 행을 추가하여 수정했습니다.

ExecStop=/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf shutdown

이 후자의 문제는 16.04에 의해 해결된 것으로 보이며 이 줄은 더 이상 필요하지 않습니다. 따라서 배포 업그레이드를 하기 전에 MySQL을 중지하고 다음을 제거해야 합니다.ExecStop구성 파일에서 줄을 켭니다.

MySQL 5.7.7에서 Red Hat Enterprise Linux 7, Oracle Linux 7, CentOS 7, SUSE Linux Enterprise Server 12, Fedora 24 및 25에 대해 권장하는 문서는 다음과 같습니다.

https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html

Ubuntu 16.04에서 서비스는 mysqld가 아니라 mysql이라고 불립니다. 그래서 저는 이렇게 했습니다.

sudo mkdir /etc/systemd/system/mysql.service.d
sudo vi /etc/systemd/system/mysql.service.d/override.conf

새 파일 override.conf에 추가했습니다.

[Service]
LimitNOFILE=5000

그런 다음 서비스를 다시 시작했습니다.

sudo systemctl daemon-reload
sudo systemctl restart mysql

기존의 mysql.service 파일을 제안대로 복사하지 말고, 변경 사항만 포함한 파일을 만들 것을 제안합니다.또한 다음과 같습니다.

mkdir /lib/systemd/system/mysql.service.d
vim /etc/systemd/system/mysql.service.d/limits.conf

limits.conf의 내용은 간단히 다음과 같습니다.

[Service]
LimitNOFILE=10000
LimitMEMLOCK=10000

당신이 원하는 한계가 무엇이든 간에.

systemd의 경우 override.conf 파일을 검색하거나 만들 필요가 없습니다.다음 명령만 사용하면 됩니다.

sudo systemctl edit mysql

override.conf 파일이 존재하면 파일을 읽어 들이고, 그렇지 않으면 지금 만들 수 있습니다.

나머지는 프레데릭이 쓴 대로입니다.Limit NOFILE을 입력하고 서비스를 다시 시작합니다.

언급URL : https://stackoverflow.com/questions/30901041/can-not-increase-max-open-files-for-mysql-max-connections-in-ubuntu-15

반응형