¿Cómo diagnosticar una ralentización?

Últimamente mi sitio ha experimentado una ligera y repentina lentitud al cargar páginas. Tuve un problema en el que se generó una copia de seguridad y excedió el espacio en mi volumen de DigitalOcean, lo que provocó la caída del sitio. Desde entonces, he tenido dificultades para reconstruir el sitio. Estos eventos podrían estar relacionados según el momento en que ocurrieron. Actualmente, el sitio parece estar en un estado estable, pero simplemente más lento de lo que estoy acostumbrado.

Podría entrar en más detalles sobre lo que sucedió, pero preferiría hacer una pregunta más general. ¿Cuáles son algunas técnicas para diagnosticar la causa de una lentitud? Mi droplet tiene una utilización promedio de CPU del 20%, por lo que parece que tengo recursos suficientes (4 GB de memoria / 2 vCPU AMD / 80 GB de disco, ~15k visitas a páginas al día).

Cualquier consejo es bienvenido.

3 Me gusta

Mi primera parada sería
vmstat 5 5
en la línea de comandos.

3 Me gusta

Gracias por la sugerencia. No estoy familiarizado con el comando, ¿hay algo en particular que deba buscar?
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n r b swpd free buff cache si so bi bo in cs us sy id wa st\n 1 0 475136 144304 20296 1786100 2 3 2622 447 44 50 19 3 72 1 4\n 0 0 475136 143076 20304 1785312 0 0 65 25 622 584 2 1 95 0 1\n 0 0 475136 141080 20456 1789144 0 0 800 3 459 473 2 1 96 0 1\n 3 0 475136 143092 20572 1783408 0 17 11598 51 733 966 14 6 67 2 12\n 0 0 475648 134688 20376 1791036 0 81 38915 394 1323 1784 10 8 61 8 13\n

1 me gusta

¡Gracias! Si tuvieras escasez de memoria, los números de caché serían pequeños, y si estuvieras paginando mucho, las columnas si y so serían grandes. Pero no es así.

Vemos un gran pico en bi y bo, que típicamente es actividad de disco. Me pregunto si algo en algún lugar está construyendo, reparando o escaneando algo.

Quizás intenta ejecutar
ps auxrc
cada cinco segundos durante un minuto más o menos, para ver si puedes capturar un proceso ocupado en acción.

Hay otras utilidades que quizás aún no estén instaladas: quizás busca “Cómo monitorear la E/S de disco en un sistema Linux” o similar.

Vale la pena señalar que si tienes dudas sobre la integridad de tu sistema, reconstruirlo a partir de una copia de seguridad podría ser la forma más rápida de avanzar. Pero asegúrate de tener una copia externa de la copia de seguridad, si no dos, en caso de accidente. Y, idealmente, haz la instalación en una nueva instancia y mantén la existente hasta que la nueva funcione correctamente.

5 Me gusta

¡Este es un gran consejo, gracias!

Estoy al 80% de uso de memoria. ¿Es esto normal? La caída se debe a que detuve y reinicié la aplicación usando el lanzador.

droplet: 4 GB Memory / 2 AMD vCPUs / 80 GB Disk

Inicié un nuevo droplet, cargué una copia de seguridad del foro (sin imágenes) y obtengo un comportamiento similar.

Salida de htop, ordenada por memoria:

El 80% no me parece problemático.

Lo más interesante es que tienes muchos procesos de sidekiq y, sin embargo, veo la anotación “0 de 5 ocupados”, tienes más de 5. También parece que tienes muchos hilos de unicorn.

Sugiero un nuevo tema aquí, con tu salida de htop, incluyendo tu configuración yml sobre si has ajustado tu recuento de unicorn. Pregunta si este conjunto de procesos parece razonable.

Tengo un htop muy similar en el mismo VPS (aunque con un procesador diferente) y no he cambiado nada de la configuración predeterminada.

Sin saber nada, diría que solo muestra una cosa: no hay demasiado tráfico, si es que lo hay, en ese momento.

1 me gusta

Ah sí, debería haber revisado mi propio htop: muy similar.

Otra idea muy diferente, para la observación original de ‘una ralentización’, es activar el mini-profiler con Alt-P, luego acceder a una página típica grande de tu foro y ver qué consultas se están realizando y cuánto tiempo tardan, haciendo clic en la cifra de tiempo que aparece en la esquina superior derecha.

1 me gusta

Pude hacer una actualización de apt y también reconstruir. Este problema: Pups error on rebuild 🐕 me impidió reconstruir durante un tiempo.

Desde la reconstrucción, se siente mejorado. Sin embargo, no me gusta operar por intuición en este caso, prefiero tener análisis y datos medibles. Agradezco los consejos @Ed_S, serán útiles para un monitoreo adicional.

Me pregunto si es posible capturar algunos de estos datos de perfil para mostrar la “salud” de la instancia a través de la página de administración. ¿Quizás una idea de plugin potencial o una característica central futura?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.