Desempenho insatisfatório na instância do Amazon RDS

4

Estou fazendo alguns testes de carga / estresse em um aplicativo da Web PHP que é apoiado por uma instância de banco de dados Small RDS. Quando acessei o site com ~ 50 solicitações da Web simultâneas, o banco de dados do RDS parou de responder a todas as solicitações de conexão por aproximadamente 10 segundos (tanto do meu aplicativo da Web quanto de mim usando o cliente mysql da linha de comando de outras máquinas). PHP dá o seguinte erro:

Could not connect to database. Lost connection to MySQL server at 'reading initial communication packet', system error: 110

Assumi que era apenas um SQL pobre / lento no aplicativo da web que estava sobrecarregando recursos, mas esse desempenho parece muito ruim, então eu investiguei um pouco mais. Eu configurei outro servidor mysql em uma micro instância do EC2 com a mesma versão do mysql, um clone do banco de dados e uma configuração padrão. A instância do EC2 executa várias vezes melhor (latência e # de solicitações da Web simultâneas antes de coaxar).

Minha instância do RDS e minha instância do EC2 estão usando a mesma versão do mysql, com configurações padrão, embora eu tenha tentado ajustar a instância do RDS para aumentar vários buffers, max_connections e max_connection_errors, tudo sem sucesso.

O que dá? Por que uma instância do RDS com melhor E / S de "disco", 3x RAM e mais CPU dedicada seria superada por uma instância fraca do EC2?

Minha suspeita é que se trata de um problema da AWS ou de uma configuração do MySQL / RDS - esperando que um guru sobre um assunto possa esclarecer o problema ... Obrigado!

    
por Stefan 01.09.2011 / 08:25

2 respostas

3

Uma das coisas que encontramos em uma pequena instância do RDS foi a configuração do # de conexões. É uma fórmula baseada em RAM - e permite apenas 150 conexões em um pequeno banco de dados. Essa é a primeira coisa que eu olharia.

SHOW PROCESSLIST;

seria o comando. Se você não estiver usando algum tipo de pool de conexão no seu aplicativo, eu posso ver esse limite rapidamente.

Apenas um tiro no escuro, mas boa sorte de qualquer maneira!

    
por 16.09.2011 / 21:00
1

Você precisa criar um "Grupo de parâmetros de banco de dados" e usar as ferramentas de linha de comando para editar a configuração: Guia de implantação do AWS RDS .

    
por 28.03.2012 / 17:40