Melhorando a conexão com o RDS da Amazon a partir do EC2

2

A conexão a um banco de dados local na mesma instância do EC2 tem baixa latência, mas para o RDS as coisas ficam muito altas. Veja os resultados abaixo.

time mysql -u root -proot -h localhost -e 'show databases'

+--------------------+
| Database           |
+--------------------+
| information_schema |
| biblical           |
| mysql              |
| performance_schema |
| phpmyadmin         |
| shop               |
+--------------------+

real    0m0.005s
user    0m0.003s
sys 0m0.000s

mas conectando-se à minha instância do Amazon RDS na mesma zona de disponibilidade, me dê isso

+--------------------+
| Database           |
+--------------------+
| information_schema |
| biblical           |
| mysql              |
| performance_schema |
| phpmyadmin         |
| shop               |
+--------------------+

real    0m0.090s
user    0m0.000s
sys 0m0.000s

.005 para 0,090 tem um grande impacto no desempenho do meu aplicativo ( Magento ), e isso foi para uma consulta simples. Se estiver realizando uma consulta mais intensa da CPU, isso pode ficar muito alto. Existe alguma maneira de melhorar isso ??

    
por philip oghenerobo balogun 10.02.2017 / 11:40

1 resposta

2

Você está comparando um banco de dados local com um nó conectado à rede. Simplesmente negociando uma conexão TCP, o processo de autenticação e a transferência de dados podem facilmente consumir esses 90ms em muitos cenários. Você pode mitigar esses resultados implementando pools de conexão no lado do cliente, mas a latência de rede para transferência de dados ainda será aplicada.

Você também deve ajustar sua instância do RDS para sua carga de trabalho, pois as configurações padrão do RDS são bastante genéricas e não se ajustam a todos os casos de uso. Cache de consulta, tempos limite de conexão, nível de isolamento de transação ... todos eles podem impactar brutalmente suas consultas toda vez que seu desempenho de destino estiver no nível de ms de dígito único.

Lembre-se de que o RDS nada mais é do que um software SQL padrão executado em instâncias do EC2. Se você implantar uma instância do EC2 em seu VPC e instalar o MySQL para executar suas consultas em sua instância do Magento, deverá esperar o mesmo desempenho de consulta sempre que implantar uma configuração do EC2 + EBS com recursos comparáveis à sua instância do RDS. Pela minha experiência, o RDS e o MySQL no EC2 fornecem o mesmo desempenho, o RDS "simplesmente" automatiza as tarefas típicas de operação do sistema.

    
por 08.03.2017 / 21:50