Estou rodando uma aplicação WEB (PHP + MariaDB) para minha empresa, desenvolvendo em meu laptop e rodando a versão de produção em um servidor dedicado.
Recentemente, comecei a medir o desempenho e percebi que meu laptop tem um desempenho melhor que o servidor. Por exemplo, uma das páginas é gerada em aproximadamente 50 ms no meu laptop versus aproximadamente 130 ms no servidor. Este tempo é medido no código PHP usando microtime(), assim os atrasos nas solicitações de rede ao servidor são ignorados.
O problema é que o servidor deve ter um desempenho melhor do que o meu laptop em todos os pontos. 130 ms são adequados para este aplicativo, daí o motivo pelo qual nunca percebi esse fato. Mas se possível, gostaria de entender o que causa isso.
Acho que o próximo passo seria medir o tempo em diferentes pontos do código, mas a diferença é tão importante (> x2,5) que não consigo deixar de pensar que estou faltando alguma coisa.
Aqui estão alguns detalhes.
CPU
- Computador portátil: CPU Intel(R) Core(TM) i5-5200U a 2,20 GHz
- Servidor: CPU Intel(R) Xeon(R) E3-1270 v6 a 3,80 GHz
BATER
- Computador portátil: 16 GB DDR3 a 1600 MHz
- Servidor: 32 GB DDR4 a 2.400 MHz
SO
Ambos estão rodando Debian 9, portanto rodam a mesma versão do Apache2, PHP, MariaDB... e devem ser configurados mais ou menos da mesma forma.
Maria DB
No servidor, ele está configurado para usar 24 GB de RAM para o tamanho do pool InnoDB dividido em 12 instâncias (todas as tabelas estão usando InnoDB). Atualmente, ele usa apenas 4,5 GB de RAM, portanto, o acesso ao disco não deve ser um problema.
O que mais?
- O uso de swap é nulo
- CPU fica ociosa na maior parte do tempo
- Em particular, as medições foram feitas em momentos onde ninguém mais estava usando o aplicativo
- O servidor está executando outros serviços (por exemplo, git, outras aplicações WEB) que não deveriam ter tal impacto no desempenho, especialmente devido ao baixo uso da CPU