La publicación está tomando varios segundos

Tenemos 5 millones de publicaciones y la búsqueda es bastante rápida. Estamos alojados en 6 núcleos compartidos de un Xeon E5-2680 de 2.8 GHz con 16 GB de RAM y almacenamiento SSD. Dicho esto, no tengo métricas sobre cuántas publicaciones simultáneas inician nuestros usuarios; podría haber problemas de bloqueo.

Publicar, por otro lado, a menudo es bastante lento. Puede tardar de 6 a 7 segundos en procesarse una publicación. Discourse no bloquea el sistema mientras procesa, por lo que esto no afecta la experiencia del usuario.

1 me gusta

Esto… no es normal.

Creo que esto es muy probable en cualquier tema con cientos o miles de publicaciones. En temas cortos, no debería ser así.

Recuerdo que el foro de @Wingtip tiene toneladas de temas muy largos.

2 Me gusta

Sí, definitivamente sí.

¿Son específicos los tiempos de publicación de 6-7 segundos para los temas masivos? Si respondes a un tema con 100 respuestas, ¿también toma de 6 a 7 segundos?

No pude reproducirlo justo ahora; la publicación lenta es intermitente. No parece correlacionarse con la cantidad de publicaciones en el hilo. Quizás sea un problema de bloqueo por otra persona publicando simultáneamente o algo así.

7 publicaciones = muy rápido, aproximadamente igual que aquí en meta
500 publicaciones = quizás un poco más lento, no demasiado malo. ¿Quizás 1.5 segundos?
16k publicaciones = parece aproximadamente lo mismo que con 500

1 me gusta

Y creo que el rendimiento también se ve afectado si un grupo de personas accede a un tema masivo, lo que ralentiza todo el servidor PG con solicitudes en cola.

Tiene sentido priorizar la experiencia de muchas personas que leen un hilo sobre la de una o dos que intentan publicar.

¿Qué tan valiente te sientes? ¿Te importaría habilitar mini_profiler por un momento? Esto te mostrará los tiempos a un lado, y así podremos aislar qué consulta te está dando problemas.

Mi publicación aquí tardó 576 ms

La consulta más lenta es:

Y @riking está trabajando en una PR que solucionará esto :confetti_ball:

6 Me gusta

¿Cuánto afecta la activación al rendimiento general? ¿Y se puede activar sin una reconstrucción del sitio? No he logrado que una reconstrucción tenga éxito desde el cambio a PostgreSQL 12, incluso configurándolo para que se mantenga en pg10.

Necesitas configurar tu dirección de correo electrónico como el correo del desarrollador en el archivo app.yml. Puedes aplicarlo sin recompilar destruyendo y reiniciando el contenedor. Si has realizado cambios en el contenedor al actualizar con Discourse Docker, estos se perderán.

También puedes editar config/discourse.conf dentro del contenedor y luego

  sv restart unicorn
1 me gusta

Dado que las reconstrucciones están fallando, mi preocupación es que si destruyo el contenedor, me quedaré completamente sin opciones. Tuve tantos errores al intentar la actualización a pg12 ayer que realmente no me siento cómodo haciendo cambios hasta tener la confianza de que no dejaré el sitio fuera de servicio por un período prolongado.

1 me gusta

Bueno, el consejo gratuito vale lo que pagas por él, pero es bastante seguro ejecutar:

cd /var/discourse
./launcher enter app
vi config/discourse.conf
# en vi, edita la línea developer_emails para incluir tu dirección de correo electrónico y sal de vi
sv unicorn restart
# entra en pánico durante los 30-90 segundos que tarda el servidor web en reiniciarse y comenzar a servir páginas

Sin embargo, aún podrías romper algo de esta manera. Creo que es posible dañar ese archivo de configuración de tal forma que Discourse no inicie.

sv restart unicorn funcionó, sv unicorn restart no.

Me equivoco al revés aproximadamente 1 de cada 3 veces. :wink:

Aun así, es una mejora, ya que antes me equivocaba la mitad de las veces.

1 me gusta

¿Es esto lo que necesitabas? Esto se está publicando en un hilo con 16 mil publicaciones. Parecía un momento normal para publicar, no particularmente lento.

Aquí está la salida completa:
https://paste.mozilla.org/f5nJrPag

2 Me gusta

Es una consulta de 2s que proviene de app/models/user_stat.rb:159:in `update_topic_reply_count’.

Así que es exactamente lo mismo en lo que @riking está trabajando.

5 Me gusta

¡Genial! Cualquier mejora sustancial en el tiempo de publicación hará muy felices a nuestros usuarios; de momento, es lo que más se critica. Aunque no tengo ninguna duda de que pronto encontrarán algo más por lo que quejarse.

3 Me gusta

Si te sirve de consuelo, yo también me quejé de esa consulta, porque tengo un estado de lectura tan alto aquí en Meta. Estamos haciendo un trabajo inútil contando cosas en cada respuesta…

1 me gusta

En nuestra prueba de importación desde otro software, tenemos un tema con un poco más de 200.000 publicaciones y pude publicar en él sin problemas. Debe ser porque lo que importa no es el tamaño del tema, sino el usuario que realiza la publicación.

1 me gusta