mysql ajustando automaticamente os valores máximos de conexões

11

Eu configurei o número máximo de conexões para cerca de 2000 no arquivo my.cnf.

max_connections=2048

Eu atualizei para 5.5.20 e agora vejo a seguinte linha no log de erros.

120201 19:40:24 [Warning] Changed limits: max_open_files: 1024  max_connections: 214  table_cache: 400

Por que o mysql mudou o valor de conexões máximas para 214?

# mysqladmin variables | grep max_connections
| max_connections | 214                                               

Arquivos abertos suaves e rígidos, restritos pelo sistema operacional, são 1024

# ulimit -Sa | grep "open files"
open files                      (-n) 1024

# ulimit -Ha | grep "open files"
open files                      (-n) 1024

O número de conexões máximas realmente usadas:

# mysql -e"show status like '%used_connections%'"
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 95     |
+----------------------+-------+
shantanuo
fonte
1
Tente definir os arquivos abertos Ulimit mais alto, como 4096.ulimit -n 4096
O comportamento mudou? Eu tinha a versão 5.0.77 e não percebi esse problema. É somente quando atualizei para 5.5.20 que os valores foram alterados!
Shantanuo
1
Só vou perguntar o óbvio. Você confirmou que a atualização não mudou o my.cnf? Além disso, qual sistema operacional? Isso foi instalado por um gerenciador de pacotes como yum? Em caso afirmativo, qual pacote?
Derek Downey

Respostas:

5

Parece bom para mim. Você não pode ter max_connections maiores que isso, porque open_files_limit é muito baixo. Para cada conexão, o MySQL abre vários arquivos. Dê uma olhada aqui .

Portanto, você terá que aumentar o limite de arquivos abertos no sistema operacional e, posteriormente, colocar um valor mais alto de max_connections.

Aleksandar Vucetic
fonte
5

Este parece ser o mesmo problema que eu respondi no stackoverflow aqui , embora estivesse usando o CentOS 7 e o MySQL 5.6.26

Você precisa aumentar o limite de arquivos abertos, tanto para o usuário mysql (em limits.conf) quanto para o serviço mysql (no arquivo mysql.service)

anexe essas duas linhas ao /etc/security/limits.conf

mysql hard nofile 65535
mysql soft nofile 65535

anexe esta linha a /usr/lib/systemd/system/mysqld.service (na seção [service])

LimitNOFILE=65535

finalmente reinicie e verifique se essas mensagens de erro desapareceram do seu log de erros do mysql.

MNB
fonte
A outra solução é: dba.stackexchange.com/questions/32987/…
Nav
@Nav - Sim, você não pode usar o número máximo de conexões configuradas se o sistema operacional não permitir que o número apropriado de identificadores de arquivos seja usado pelo mysqld
MNB
Além disso, o Ubuntu 15.04+ precisa de uma abordagem diferente: stackoverflow.com/questions/23977095/…
Nav Nav
0

Parece haver algum bug no novo mysqld. Eu tive o mesmo problema. Definir max_connections como 700 funcionou, mas se eu defini-lo como 900, ele foi redefinido para 214 durante a inicialização. Se essa fosse uma mudança proposital, ela a reduziria para 700 ou algo semelhante, o valor 214 não faz sentido.
De qualquer forma, aumentar o limite do descritor com ulimit -n corrige o problema.

Bart K
fonte