Tiempos elevados de red TTFB en servidores locales y remotos

Estoy abordando la lentitud en algunas llamadas http para una stack de aplicaciones Angular 1.3, NodeJS, Postgres DB. El control remoto está alojado en las instancias de AWS EC2.

La documentación de las herramientas de desarrollo de Google me dio una buena comprensión de los tiempos, y esta publicación SO explica las cosas que puedes hacer al respecto.

La respuesta de mi red para una llamada HTTP en particular muestra una lentitud en TTFB (tiempo hasta el primer byte), a veces tan lento como los 3s agregados en el tiempo de ttfb, indicando:

a) Una mala conexión de red entre el cliente y el servidor. Así que los datos tardan en llegar al servidor y volver.

b) Un servidor lento procesando la solicitud. Esto se debe a que el hardware es débil o la ejecución de la aplicación es lenta. O bien, ambos problemas pueden existir a la vez.

Lo que he intentado:

  • La comparación de los tiempos de respuesta de AWS locales y remotos produce una lentitud similar. Así que no parece que las redes entre mi cliente y mi servidor sean el problema
  • La ejecución de EXPLAIN ANALYZE en las consultas en cuestión produce un tiempo de procesamiento rápido <2 ms
  • Utilizamos el almacenamiento en caché de Redis para otras partes del servidor, pero no para esta llamada en particular

Mi pregunta es : si no aparece, hay mucha diferencia en la velocidad entre lo remoto y lo local, y los tiempos de consulta son bastante rápidos, ¿qué otra cosa podría ser más lenta? ¿Hay algún middleware o procesamiento en el lado del nodo, o alguna regulación de Angular?

Curiosamente, lo que también he encontrado es que el tiempo TTFB varía de forma ocasional para la misma solicitud … con tiempo TTFB 3s. ¿Por qué es esto?

Respuesta de la red:

introduzca la descripción de la imagen aquí

EXPLICAR ANALIZAR los resultados de las consultas en cuestión:

  Planning time: 0.915 ms Execution time: 1.687 ms (30 rows) 

Versiones:

Postgres : 9.6.1

 select version(); PostgreSQL 9.6.1 on x86_64-apple-darwin14.5.0, compiled by Apple LLVM version 7.0.2 (clang-700.1.81), 64-bit 

Nodo : 7.4.0

Knex : 0.12.6

Angular : 1.3

La comparación de los tiempos de respuesta de AWS locales y remotos produce una lentitud similar.

Esto apunta a la causa más probable del problema: el uso ineficiente de las conexiones de base de datos.

El TTFB incoherente proviene del hecho de que a veces su solicitud llega mientras todas las conexiones disponibles se consumen y no se liberan a tiempo. El controlador pg predeterminado en este caso provoca un período de espera hasta que una conexión esté disponible en el grupo.

Para resolver esto, necesita ver cómo usa las conexiones:

  • el tamaño de la piscina
  • la forma en que se gestionan las conexiones en todas las solicitudes