¿Cómo determinar el cuello de botella de rendimiento?

Intenté buscar esto, pero no encontré nada publicado recientemente, así que pensé en preguntar para determinar qué es normal y qué se espera.

Vengo de otros foros, y la primera carga de página es razonablemente rápida, pero con Discourse la página se carga, pero se me presenta un círculo giratorio mientras espera que la página se renderice. No estoy seguro si es un retraso del servidor o un retraso del cliente/JS en la construcción de la página según el resultado del servidor devuelto.

El retraso es de alrededor de 5 a 10 segundos, pero en general el rendimiento está bien después de eso.

Si el problema es probable que sea del servidor/alojamiento, ¿cuál es el problema normal? Ya que las métricas de todo parecen bajas. La CPU, el disco y la memoria no parecen estar al máximo, así que no estoy seguro de dónde invertir $$ si el resultado no está realmente relacionado con el servidor. ¿Algún consejo para monitorear o observar métricas que puedan ayudar a mostrar dónde Discourse está gastando su tiempo esperando cosas?

Puedes ver hasta dónde se renderiza la primera página aquí. Una CDN podría ayudar.

¿Qué tan lejos? ¿Aquí dónde?

¿En qué versión de Discourse te encuentras?

¿Cuántas publicaciones hay en los temas que estás viendo/probando?

Rápido y Meta, sospecho :wink:

1 me gusta

Última versión 2.8.x y solo unos 30 usuarios. Estoy funcionando en un vCPU de doble núcleo con 2 GB de RAM y disco SSD.

Como se mencionó, todas las métricas en el servidor no muestran carga, así que no entiendo por qué hay 5 segundos de espera antes de que la página se renderice por completo.

Entonces, ¿no hay nada que revisar o monitorear, solo instalar y rezar para que todo esté bien?

En realidad, es más como si el servidor se enfriara y yo solo estuviera solicitando una actualización de página que no se ha realizado en mucho tiempo. ¿Las partes del backend se quedan inactivas o algo así, de modo que el uso infrecuente significa que la primera persona probablemente esperará un poco más de lo habitual?

Cuando dices 30 usuarios, ¿te refieres a concurrentes o a toda la base de usuarios?

Si son 30 usuarios concurrentes, entonces tu especificación podría ser un poco baja.

¿Cuál es la memoria en promedio? ¿30-50-80%?

Estaba mirando las gráficas de velocidad y rendimiento de G Analytics, noté un cambio desde que pasamos de 2.2 a 2.9, una mejora, pero necesito investigar más. Realmente no estoy experimentando una lentitud notable, si acaso parece más rápido. Entonces, ¿qué sé yo o qué sabe G Analytics?

También leí sobre el límite de 10K publicaciones por tema, que si tienes muchas publicaciones, creo que tiene que cargar todo en la memoria antes de mostrarlo, y esto se percibe como lentitud al principio.

Encuentro que una vez que carga algo, todo es rápido. No soy un experto, pero también podría ser el navegador y todo tipo de otros trucos del oficio empleados para ofrecer la experiencia de Discourse.

¿Es este un VPS en un host o algo más? ¿Cómo se instaló? Saber qué 2vcpu es útil, no todos los procesadores son iguales.

¿Hay algo entre la instancia y los clientes? ¿Un proxy inverso o algo como CloudFlare?

1 me gusta

Finalmente abrí las Herramientas para desarrolladores y puedo ver algunos mensajes de error… parece que a) faltan fuentes o no se encuentran y b) que está usando IP en lugar del FQDN correcto, de lo cual no estoy seguro si la IP es correcta

The FetchEvent for "https://35.212.139.150/fonts/Roboto-Regular.ttf?v=0.0.9" resulted in a network error response: the promise was rejected.
Promise.then (async)
(anonymous) @ Router.mjs:60
The FetchEvent for "https://35.212.139.150/fonts/Roboto-Bold.ttf?v=0.0.9" resulted in a network error response: the promise was rejected.
Promise.then (async)
(anonymous) @ Router.mjs:60
NetworkFirst.mjs:167 Uncaught (in promise) no-response: no-response :: [{"url":"https://35.212.139.150/fonts/Roboto-Regular.ttf?v=0.0.9"}]
    at a.makeRequest (https://community.hubivue.com/javascripts/workbox/workbox-strategies.prod.js:1:2145)
makeRequest @ NetworkFirst.mjs:167
color_definitions_light_4_1_530ebcc4a553d42866a6f343d784841cf5c0b816.css:1          GET https://35.212.139.150/fonts/Roboto-Regular.ttf?v=0.0.9 net::ERR_FAILED
NetworkFirst.mjs:167 Uncaught (in promise) no-response: no-response :: [{"url":"https://35.212.139.150/fonts/Roboto-Bold.ttf?v=0.0.9"}]
    at a.makeRequest (https://community.hubivue.com/javascripts/workbox/workbox-strategies.prod.js:1:2145)
makeRequest @ NetworkFirst.mjs:167
color_definitions_light_4_1_530ebcc4a553d42866a6f343d784841cf5c0b816.css:1          GET https://35.212.139.150/fonts/Roboto-Bold.ttf?v=0.0.9 net::ERR_FAILED

VM de Google Cloud y nada entre el host y la web / sin CDN.

Ok, así que parece que estás alojando esta instancia en Google.

¿Alguien intentó instalarla contra la dirección IP antes del nombre DNS?

1 me gusta

Vaya… Restablecí las opciones de fuente a los valores predeterminados (es decir, Arial) y todo funciona bien. Parece un error o algo está desalineado al seleccionar fuentes en la configuración. Caso cerrado y me conformaré con Arial por ahora.

1 me gusta

Probablemente. No estoy seguro. Si eso es un problema, ¿hay alguna forma de restablecerlo?

Depende de cómo cambiaron a usar el nombre de host después de intentar usar la IP.

¿Se instaló siguiendo los pasos de la Instalación estándar? Hablaría con quien haya configurado la instancia para averiguar qué se hizo. Es posible que la IP todavía se esté haciendo referencia en otro lugar.

1 me gusta

¿Hay algún comando para restablecer la instalación o solucionarlo? Parece absurdo que nunca se pueda volver a cambiar el nombre del host. ¿Es esa limitación intencionada?

Tenga en cuenta que el rendimiento ahora es bueno, ya que se están utilizando las fuentes básicas; los problemas parecen estar relacionados con el uso de las fuentes Google Roboto.

1 me gusta

Supongo que debería seguir esta guía más o menos…

No hace daño intentarlo, pero si no conoces nada de la historia de la instancia, ni siquiera podemos confirmar si estás ejecutando una instalación con soporte oficial.

1 me gusta