O servidor RDS vem com 40 conexões no máximo, como na documentação a seguir,
estou usando o Magento 1.9 e, em alguns momentos, chego ao número máximo e o site está fora de serviço.
Você tem alguma maneira recomendada de resolver esse problema?
Pelo que entendi, se eu tenho 2 servidores de conexão com um servidor RDS .. então eu deveria ter 2 conexões RDS, não mais.
amazon-web-services
database
rds
amazon-rds
Alaa Badran
fonte
fonte
max_connections
parâmetro Para a maioria das cargas de trabalho, você deve aumentá-lo com segurança, porque é um valor padrão conservador e seguro ... mas você deseja investigar a causa desses picos.Respostas:
A variável de limite max_connections do AWS RDS é baseada no tipo de instância, para que você possa atualizar seu RDS ou fazer mais réplicas.
Os tipos RDS com limite max_connections:
Atualização 2017-07
A configuração atual max_connections do MySQL do RDS é padrão por
{DBInstanceClassMemory/12582880}
, se você usar t2.micro com 512 MB de RAM, as max_connections podem ser (512 * 1024 * 1024) / 12582880 ~ = 40 e assim por diante.Cada servidor da Web pode ter muitas conexões com o RDS, o que depende de suas solicitações SQL do servidor da Web.
fonte
{DBInstanceClassMemory/12582880}
Verifico os grupos de parâmetros do RDS, o max_connections é o padrão , portanto, quando você usa t2.micro com 512 MB de RAM, o max_connections pode ser o(512*1024*1024)/12582880 = 40.69
que poderia explicar suas 40 conexões máximas.show variables like 'max_connections';
.parameter group
e alterar o valormax_connections
para o valor desejado. Este será o novo limite de conexão para sua instância do RDS.SHOW VARIABLES WHERE Variable_name='max_connections'
Você pode alterar o
max_connections
valor atualizando a política de parâmetros padrão ou criar uma nova - eu sugiro ir com a última.max_connections
valorEspero que isto ajude!
fonte
Embora aumentar o número máximo de conexões na configuração do servidor possa resolver o problema, considere verificar as configurações e implementações de aplicativos.
Não sou especialista em Magento, mas como recentemente tive um problema semelhante em um projeto em que estava trabalhando, notei que a implementação padrão da estrutura que estava usando criava uma conexão com todas as chamadas ao banco de dados.
Embora isso possa não causar problemas a alguns, no momento em que você tem mais visitantes ou algumas tarefas que usam intensamente o banco de dados e podem ser executadas em várias conexões, a melhor maneira de evitar que o servidor trava com o erro "MUITAS CONEXÕES" é implementar um banco de dados pool de conexão.
Isso impede que o aplicativo crie mais conexões que o servidor possa manipular e não troque o aplicativo com os usuários. Um conjunto de conexões manteria uma fila para as solicitações de acesso ao banco de dados até que uma conexão se torne disponível, para que possa prosseguir com o processamento da solicitação dos usuários.
Lembre-se de que o pool de conexões deve ser seguro para threads em um cenário de vários threads.
fonte
Entre na sua instância do RDS (usando um cliente MySQL) e execute a seguinte consulta:
fonte
Informações reais para instâncias Postgresql t3 (grupo de parâmetros default.postgres10):
É semelhante para default.postgres9 e default.postgres11
fonte
Isso não tem no máximo 40 conexões, ou seja, 40 instâncias RDS no máximo. Você provavelmente está usando apenas uma instância com base em sua descrição.
Você pode ter milhares de conexões com o servidor RDS, pois cada vez que uma sessão é aberta com o banco de dados, isso cria uma nova conexão. Você provavelmente está enfrentando restrições de desempenho e deve aumentar a instância do RDS.
fonte