Alterando o limite de arquivos abertos no mysql 5.5

9

Estou tendo um problema com o mysql 5.5 rodando no Ubuntu 12.04 com o parâmetro open-files-limit.

Eu recentemente notei alguns problemas devido ao limite de 1024, e na verdade o limite do sistema principal foi definido para 1024, então eu 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, eu verifico o valor ulimit para o root e até para o usuário mysql, ambos retornaram o novo valor: 32000, então eu suponho que a mudança já tenha sido feita.

Eu também alterei o valor no arquivo my.cnf, definindo open-files-limit para 24000, assim:

open-files-limit    = 24000

Agora vem a parte estranha, quando eu reiniciar o serviço mysql e verificar a variável open_files_limit, ele retorna que ainda está configurado para 1024, então eu estou tendo os mesmos problemas que antes (obviamente), eu tentei usar open- files-limit 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 apenas usando o mysqld (sem parâmetros adicionais), o serviço é iniciado e quando eu verificar o parâmetro retorna 32000 ... Eu não sei de onde está tirando esse valor, já que ele não está definido como my.cnf e não está sendo dado pela linha de comando, pelo menos, não por mim mesmo.

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

    
por davidv 22.10.2012 / 10:53

1 resposta

9

Eu finalmente encontrei o problema, parece que o upstart não usa os parâmetros definidos em /etc/security/limits.conf, então quando eu inicio o mysql através do comando service (e assim, sob o upstart), ele sobrescreve os definidos limita e usa o padrão 1024.

A solução é modificar o arquivo mysql.conf que define o serviço upstart, ele está localizado em /etc/init/mysql.conf e adiciona 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, uma vez incluídas essas linhas, o serviço funciona como esperado, aplicando os valores definidos no arquivo my.conf.

Essa limitação deve se aplicar 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, essa solução também deverá funcionar.

    
por 24.10.2012 / 12:57