MySQL 5.5에서 열린 파일 제한 변경 실행하는 데 문제가

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에 설정되어 있지 않고 적어도 명령 줄을 통해 제공되지 않으므로 값을 가져 오는 위치를 모르겠습니다.

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



답변

마침내 문제가 발견되었습니다 .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에 정의 된 모든 시작 서비스에 적용되므로 열려있는 파일 제한과 동일한 문제가있는 서비스가 있으면이 솔루션도 작동해야합니다.


답변