MySQL/cuello de botella del servidor web

MySQL/cuello de botella del servidor web

Estoy intentando determinar un cuello de botella en el servidor MySQL/Web.

Tengo tres servidores. Un servidor web que ejecuta Nginx, un servidor MySQL remoto con mi base de datos Wordpress y otro servidor MySQL remoto que almacena nuestros datos.

El cuello de botella que estoy tratando de encontrar está entre mi segundo servidor MySQL que almacena nuestros datos y mi servidor web. Tenemos una página que tiene tres DataTables (tres consultas separadas). Se carga muy lentamente, si lo hace todo. De vez en cuando aparece un error de tiempo de espera de la puerta de enlace.

No creo que las consultas en sí sean el problema. Según DataGrip, los tres promedian entre 200 y 500 ms. Actualmente, las consultas no están indexadas porque me dijeron que el complemento no puede aprovechar los índices, pero podría intentarlo de todos modos.

Hardware y configuración:

Mi servidor MySQL es un AWS R6G. Large, 2 núcleos y 16 gb de ram, SSD de 150 IOPS y 128 MB de rendimiento. innodb_page_size es 32, buffer_pool_size es 11000M, innodb_buffer_pool_instances es 10 e innodb_log_file_size es 1G. El servidor web es un AWS C6G.Xlarge, 4 núcleos y 8 GB de RAM, SSD de 150 IOPS y 128 MB de rendimiento. Utiliza FPM y Opcache.

Intenté monitorear usando TOP en ambos servidores, pero para ser honesto, no estoy seguro de tener el conocimiento para utilizar correctamente la información.

Realmente me gustaría determinar si es hardware o software, de alguna manera, y si es hardware, ¿hay alguna manera de aislarlo? No tengo ningún problema en aumentar el hardware si ese es realmente el problema.

No estoy seguro de si esto está permitido en Stack/ServerFault, pero creo que podría ser más fácil saber qué está pasando si grabo mi pantalla con TOP ejecutándose en ambos servidores. Agregué un video a mi Google Drive público. El video tiene tanto mi servidor MySQL (en la parte superior) como mi servidor web (Nginx, en la parte inferior). Lo que hice fue cargar la página (marca de 3 segundos en el video) y grabar el resultado. El vídeo dura 1:05, que es el tiempo que tardó en aparecer la última tabla. El vídeo se grabó mientras mi sitio estaba en mantenimiento, por lo que ninguna otra IP/tráfico pudo llegar a ninguno de los servidores.

Enlace de mi google drive:

https://drive.google.com/drive/folders/1NtdE1Z4875i1Xx2Wy2EXGgknt9yuY1IN?usp=sharing

Ojalá alguien pueda ayudar.

Aimee

información relacionada