Alterando o limite de arquivos abertos no mysql 5.5

9

Estou tendo um problema com o mysql 5.5 em execução no Ubuntu 12.04 com o parâmetro open-files-limit.

Recentemente, notei alguns problemas devido ao limite de 1024 e, na verdade, o limite principal do sistema foi definido como 1024, então modifiquei o /etc/security/limits.conf com o seguinte:

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

Depois disso, verifiquei o valor ulimit para root e até para usuário mysql, ambos retornaram o novo valor: 32000, portanto, presumo que a alteração já tenha sido feita.

Também alterei o valor no arquivo my.cnf, configurando o limite de arquivos abertos como 24000, assim:

open-files-limit    = 24000

Agora vem a parte estranha, quando eu reinicio o serviço mysql e verifico a variável open_files_limit, ele retorna que ainda está definido como 1024, então estou tendo os mesmos problemas que antes (obviamente), tentei usar o limite de arquivos abertos Em vez disso, open_files_limit no arquivo de configuração my.cnf, mesmo resultado, MAS se eu substituir o comando service para iniciar o serviço e começar a usar apenas o mysqld (sem parâmetros adicionais), o serviço inicia e quando eu checo o parâmetro, ele retorna 32000 ... Não sei de onde ele está tirando esse valor, pois não está definido em my.cnf e não está sendo fornecido por meio da linha de comando, pelo menos, não por mim.

Alguma idéia de por que não está funcionando a mudança e como resolvê-la da maneira normal (iniciando-a através do serviço ...)?

davidv
fonte

Respostas:

9

Finalmente encontrei o problema, parece que o iniciante não usa os parâmetros definidos em /etc/security/limits.conf; portanto, quando inicio o mysql através do comando service (e, portanto, no iniciante), ele substitui os limites e usos definidos o padrão 1024.

A solução é modificar o arquivo mysql.conf que define o serviço inicial, localizado em /etc/init/mysql.conf e adicionar as seguintes linhas antes do bloco de pré-inicialização:

# 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

O primeiro valor define o limite flexível, o outro, o limite rígido, depois de adicionadas essas linhas, o serviço funciona conforme o esperado, aplicando os valores definidos no arquivo my.conf.

Essa limitação deve ser aplicada a todos os serviços iniciantes definidos em / etc / init; portanto, se algum serviço tiver o mesmo problema com o limite de arquivos abertos, esta solução também funcionará.

davidv
fonte
1
Bom trabalho lá!
Pkhamre 24/10/12
Isso fez o truque ... o homem que era uma dor
Chad Scira