Encontrar la causa raíz de las retransmisiones TCP

Encontrar la causa raíz de las retransmisiones TCP

Tenemos un producto basado en una aplicación de terceros, que se ejecuta en un servidor Apache conectado a una base de datos Firebird (v2.5.3).

Desafortunadamente, llegamos a un punto en el que se agotan los tiempos de espera cuando los usuarios intentan realizar solicitudes al servidor. Al abrir la pestaña devtools->network, vemos que los paquetes se descartan.

Para depurar este problema, registramos el tráfico de Wireshark en el servidor y vemos muchos eventos de retransmisión. Algunos de los paquetes http se pasan correctamente, pero algunos se retransmiten y sospecho que esto está provocando el tiempo de espera.

La CPU del servidor es alta (50-100%), principalmente debido a la base de datos Firebird. El proveedor de la nube donde está alojado el servidor no tiene discos SSD y somos conscientes de que esto puede ser un problema.

Una cosa extraña es que en la grabación de Wirehark no vemos las solicitudes http de los usuarios. Así busca los paquetes que se reciben:

ingrese la descripción de la imagen aquí

Cuando intenté capturar solicitudes de una IP específica que falló, solo obtuve retransmisión TCP (por lo que no veo la solicitud en sí). No estoy seguro si es significativo, pero la conexión está en el puerto 443. Este es un ejemplo de cómo se ve:

ingrese la descripción de la imagen aquí

  1. ¿Es posible que debido a que la base de datos de Firebird está ocupada/la CPU está alta, los paquetes http se descartan en un nivel más bajo (después de 4-5 segundos) incluso sin registrar la solicitud http en Wireshark?

  2. Dado que no podemos cambiar los discos a SSD, ¿cree que actualizar la CPU podría ayudar con este problema?

  3. ¿Existe alguna configuración de Apache o Firebird que pueda mejorar el rendimiento?

¿Alguna otra información que pueda intentar recopilar para obtener más información sobre el problema?

información relacionada