Estoy ejecutando una aplicación WEB (PHP + MariaDB) para mi empresa, desarrollándola en mi computadora portátil y ejecutando la versión de producción en un servidor dedicado.
Recientemente, comencé a medir el rendimiento y noté que mi computadora portátil funciona mejor que el servidor. Por ejemplo, una de las páginas se genera en ~50 ms en mi computadora portátil frente a ~130 ms en el servidor. Este tiempo se mide en el código PHP usando microtime(), por lo que se ignoran los retrasos en las solicitudes de red al servidor.
La cuestión es que el servidor debería funcionar mejor que mi computadora portátil en todos los puntos. 130 ms está bien para esta aplicación, de ahí la razón por la que nunca me di cuenta de este hecho. Pero si es posible, me gustaría entender qué causa esto.
Supongo que el siguiente paso sería medir el tiempo en diferentes puntos del código, pero la diferencia es tan importante (>x2.5) que no puedo evitar pensar que me estoy perdiendo algo.
Aquí hay algunos detalles.
UPC
- Computadora 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
RAM
- Computadora portátil: 16GB DDR3 a 1600MHz
- Servidor: 32 GB DDR4 a 2400 MHz
SO
Ambos ejecutan Debian 9, por lo tanto ejecutan la misma versión de Apache2, PHP, MariaDB... y deberían configurarse más o menos de la misma manera.
mariadb
En el servidor, está configurado para usar 24 GB de RAM para el tamaño del grupo InnoDB dividido en 12 instancias (todas las tablas usan InnoDB). Actualmente, utiliza sólo 4,5 GB de RAM, por lo que el acceso al disco no debería ser un problema.
¿Qué otra cosa?
- El uso del swap es nulo
- La CPU está inactiva la mayor parte del tiempo.
- En particular, las mediciones se realizaron en momentos en los que nadie más estaba usando la aplicación.
- El servidor ejecuta otros servicios (por ejemplo, git, otras aplicaciones WEB) que no deberían tener tanto impacto en el rendimiento, especialmente dado el bajo uso de CPU.