Introdução ao erro do MySQL: Muitas conexões
Quando você tem uma aplicação web (site, blog, fórum, etc.) que está em alta demanda, ou seja, um grande número de usuários a visita, isso se traduz em aumento do consumo no servidor. Se o referido aplicativo da web usa um banco de dados MySQL e as consultas são realmente muitas (devido à má programação da web ou por muitos usuários que usam a web), existe a possibilidade de que o MySQL mostre este erro:
mysqli_connect(): (HY000/1040): Too many connections
O que significa o erro MySQL: Muitas conexões?
Isso significa que muitas solicitações estão chegando ao MySQL, mais do que ele pode aceitar, mais do que pode enfileirar ou esperar.
Como resolver isso?
Simples, devemos aumentar o limite máximo de requisições (conexões) que o MySQL suporta.
Vou lhe dar duas opções para corrigir esse problema:
1. Editamos o arquivo /etc/mysql/my.cfg:
nano /etc/mysql/my.cfg
Nele colocamos o seguinte onde diz [mysql]:
max_connections = 500 max_user_connections = 500
Isso aumentará o número máximo de conexões de 100 (que é o padrão) para 500.
Nós salvamos e saímos, então reiniciamos o serviço MySQL e é isso. Essa mudança é permanente.
2. Outra forma de resolver esse problema é alterar o limite máximo para igual, mas por meio de uma consulta MySQL.
Vamos primeiro mostrar o limite atual:
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
Isso vai nos mostrar algo assim:
+ ----------------- + ------- + | Variable_name | Valor | + ----------------- + ------- + | max_connections | 151 + ----------------- + ------- +
Em outras palavras, o limite atual é de 151 conexões, bem, vamos aumentá-lo para 500 por meio de uma consulta:
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
Pronto!
O problema dessa forma é que quando o serviço é reiniciado, essa configuração é perdida.
Para compensar esse detalhe, você pode fazer um script bash que verifica a cada X período de tempo, ou até mesmo adicionar a linha ao bloco de início ou reinicialização do daemon
Mas então por que quero conhecer essa 2ª opção? … bem, foi o que eu disse. Mas há um mês um servidor Ubuntu ignorou o método nº 1, então... em casos extremos de sistema operacional estúpido, temos esta segunda opção que funciona tão bem
Bom post, MySql… eles usam muito no FreeBSD,… .KZKG ^ Gaara?,… Seria bom se você fizesse um post, sobre como instalar e configurar o MySql no FreeBSD como: SSH (secure - shell), SSH (via Web), SFTP (SSH-File Transfer Protocol), Apache - extensões PHP- MySql, PHP5 e PhpSysInfo.
Para isso eu teria que instalar o FreeBSD, não acho que tenho tempo agora, acabei de mudar de emprego e tenho muitas responsabilidades novas 🙁
Recentemente, tive que fazer algo semelhante para um projeto com nodejs. No meu caso aumentou para 250 e isso foi o suficiente, por enquanto estou bem. Obrigado pela dica
Olá, você poderia me ajudar a entrar em /etc/mysql/my.cfg?
Eu tenho um VPS, mas não consigo entrar com PUTTY.
Saudações.
Para resolver o problema da Opção 1.- Opção comentada, e manter as alterações ao reiniciar o servidor, o arquivo deve ser editado de acordo com a versão:
////////////////////////////////////////////////// ////////////////////
// Eu mudo o diretório no Ubuntu 16.04 ////////////////////////
////////////////////////////////////////////////// ////////////////////
Eu vi /etc/mysql/mysql.conf.d/mysqld.cnf
////////////////////////////////////////////////// ////////////////////
// Eu mudo o diretório no Ubuntu 15.04 ////////////////////////
////////////////////////////////////////////////// ////////////////////
vi /etc/mysql/mariadb.conf.d/mysqld.cnf
////////////////////////////////////////////////// ////////////////////
// Eu mudo o diretório no Ubuntu antigo //////////////////////////
////////////////////////////////////////////////// ////////////////////
Eu vi /etc/mysql/my.cnf
////////////////////////////////////////////////// ////////////////////
// adicione esta linha sob a tag [mysqld] ou [mysql] //
// Em seguida, reinicie o servidor //
////////////////////////////////////////////////// ////////////////////
max_conexões = 500
Tutorial do zero em nenhum momento lhe diz como alterá-lo