Ok, gerimos um carrinho de compras de autopeças em crescimento. Nosso servidor é executado lento e está sempre batendo por isso pedimos ao nosso web host para nos ajudar. Eles nos enviaram esse relatório, mas eu preciso de alguns conselhos sobre como processá-lo.
Nosso plano agora é pegar o banco de dados MySQL e hospedá-lo na AWS, mas eu preciso saber como avaliar qual instância de tamanho precisamos e qual serviço funcionaria melhor.
Também preciso de saber se há algum ajuste no apache que melhore o desempenho.
Aqui está a análise que o host da Web nos envia
A maneira como essas questões entram em ação é:
1) A pegada de RAM muito grande do seu aplicativo da Web processa mais de 512M, além do ajuste inadequado do Apache, que permite que esses processos de aplicativos da Web consumam mais RAM do que a disponível no servidor.
2) O serviço MySQL no seu servidor, como o Apache, é ajustado para alocar muito mais memória RAM do que a disponível no seu servidor. Isso torna o serviço do MySQL instável, portanto, exigirá reinicializações para corrigir problemas que não ocorreriam se fossem adequadamente ajustados para não usar mais RAM do que o que está instalado.
APACHE
A configuração Apache MaxClients do seu servidor é a padrão == 256
Seu servidor tem 32232 MB de memória
O maior processo de aplicativo da web Apache está usando 572.73 MB de memória
O menor processo de aplicativo da web Apache está usando 35.02 MB de memória
O processo médio do aplicativo da web Apache está usando 94,93 MB de memória
Indo pelo processo médio do Apache, o Apache pode potencialmente usar 24302,09 MB de RAM (75,40% da RAM disponível)
Indo pelo maior processo do Apache, o Apache pode potencialmente usar 146618,89 MB de RAM (454,89% da RAM disponível)
A configuração Apache MaxClients do seu servidor não deve ser maior que 50 se você estivesse alocando apenas 100% da RAM do seu servidor para os processos do aplicativo da web Apache.
Máximo de uso de memória potencial: 146618,88 MB (454,89% de RAM disponível)
Porcentagem de RAM alocada para o Apache 454,89%
OBSERVAÇÃO: essa análise não leva em consideração nenhum outro processo como o serviço de banco de dados MySQL em execução no servidor que também requer recursos de RAM significativos para ser executado com eficiência, atualmente com um mínimo de 1,2 GB de RAM.
MySQL
-------- Performance Metrics -------------------------------------------------
[--] Up for: 14h 11m 51s (9M q [195.147 qps], 41K conn, TX: 22B, RX: 1B)
[--] Reads / Writes: 59% / 41%
[--] Total buffers: 1.6G global + 5.0G per thread (151 max threads)
[!!] Maximum possible memory usage: 756.7G (2403% of installed RAM)
[OK] Slow queries: 0% (2K/9M)
[OK] Highest usage of available connections: 23% (35/151)
[OK] Key buffer size / total MyISAM indexes: 1.0G/2.2G
[OK] Key buffer hit rate: 100.0% (9B cached / 1M reads)
[OK] Query cache efficiency: 90.4% (8M cached / 9M selects)
[!!] Query cache prunes per day: 725309
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 147K sorts)
[!!] Joins performed without indexes: 1544
[!!] Temporary tables created on disk: 47% (96K on disk / 203K total)
[OK] Thread cache hit rate: 99% (59 created / 41K connections)
[!!] Table cache hit rate: 5% (512 open / 10K opened)
[OK] Open file limit used: 1% (910/65K)
[OK] Table locks acquired immediately: 99% (2M immediate / 2M locks)
[!!] Connections aborted: 6%
Mitigação sugerida do MySQL:
Execute OPTIMIZE TABLE para desfragmentar tabelas para melhor desempenho
Reduza sua área de cobertura geral de memória do MySQL para estabilidade do sistema
Ajuste suas consultas de associação para sempre utilizar índices
O tamanho da tabela temporária já é grande - reduza o tamanho do conjunto de resultados
Reduza suas consultas SELECT DISTINCT sem cláusulas LIMIT
Seus aplicativos não estão fechando as conexões do MySQL corretamente para que seus desenvolvedores corrijam o código para que as conexões MySQL sejam explicitamente fechadas quando os resultados da consulta forem retornados.