MySQL 5.5에서 열린 파일 제한 변경


9

open-files-limit 매개 변수를 사용하여 Ubuntu 12.04에서 mysql 5.5를 실행하는 데 문제가 있습니다.

최근에 1024 제한으로 인해 몇 가지 문제를 발견했으며 실제로 기본 시스템 제한이 1024로 설정되었으므로 다음과 같이 /etc/security/limits.conf를 수정했습니다.

* soft nofile 32000
* hard nofile 32000
root soft nofile 32000
root hard nofile 32000

그 후 root 및 심지어 mysql 사용자의 ulimit 값을 확인하여 둘 다 새 값 32000을 반환하므로 변경이 이미 완료되었다고 가정합니다.

또한 다음과 같이 open-files-limit를 24000으로 설정하여 my.cnf 파일의 값을 변경했습니다.

open-files-limit    = 24000

이제 이상한 부분이 발생합니다 .mysql 서비스를 다시 시작하고 open_files_limit 변수를 확인하면 여전히 1024로 설정되어 반환되므로 이전 (분명히)과 동일한 문제가 있습니다 .Open-files-limit 대신 my.cnf 구성 파일에서 open_files_limit, 동일한 결과, 그러나 서비스를 시작하기 위해 서비스 명령을 무시하고 mysqld (추가 매개 변수 없음)를 사용하여 시작하면 서비스가 시작되고 매개 변수를 확인하면 32000이 반환됩니다 ... my.cnf에 설정되어 있지 않고 적어도 명령 줄을 통해 제공되지 않으므로 값을 가져 오는 위치를 모르겠습니다.

변경 사항이 작동하지 않는 이유와 정상적인 방법으로 해결하는 방법에 대한 아이디어가 있습니까 (서비스를 통해 시작하는 중 ...)?

답변:


9

마침내 문제가 발견되었습니다 .upstart는 /etc/security/limits.conf에 정의 된 매개 변수를 사용하지 않는 것 같습니다. 따라서 서비스 명령을 통해 mysql을 시작하면 (upstart에서) 정의 된 한계를 무시하고 사용합니다. 기본값은 1024입니다.

해결책은 upstart 서비스를 정의하는 mysql.conf 파일을 수정하는 것입니다.이 파일은 /etc/init/mysql.conf에 있으며 pre-start 블록 앞에 다음 행을 추가합니다.

# NB: Upstart scripts do not respect
# /etc/security/limits.conf, so the open-file limits
# settings need to be applied here.
limit nofile 32000 32000
limit nproc 32000 32000

첫 번째 값은 소프트 한계를 정의하고 다른 한계는 하드 라인을 일단 추가하면 서비스는 my.conf 파일에 정의 된 값을 적용하여 예상대로 작동합니다.

이 제한은 / etc / init에 정의 된 모든 시작 서비스에 적용되므로 열려있는 파일 제한과 동일한 문제가있는 서비스가 있으면이 솔루션도 작동해야합니다.


1
잘 했어요!
pkhamre

이것은 속임수를
썼다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.