Ember jquery sin memoria al escribir respuesta

En la versión 2.7.0beta4 11f28e3eb3

Al escribir una respuesta, el navegador del cliente se bloquea y la Consola de Desarrollo muestra “Out Of Memory” en Ember-jquery.

He desactivado Presence, ocultado la vista previa, iniciado una nueva imagen web_only y levantado un nuevo contenedor. Todo sigue mostrando los mismos errores.

Estoy utilizando un CDN tanto para las cargas a S3 como para el contenido estático. He limpiado la caché en el CDN.

También veo una avalancha de mensajes en error.log para:

Feb 19 02:27:42 discourse error.log 2021/02/19 10:27:42 [alert] 677#677: 768 worker_connections are not enough

¿Ocurre el problema si intentas el modo seguro?

your.site.com/safe-mode

Modo seguro: con todas las casillas marcadas, me aparece la página Oops:

Oops

El software que impulsa este foro de discusión encontró un problema inesperado. Pedimos disculpas por las molestias.

Se registró información detallada sobre el error y se generó una notificación automática. Lo revisaremos.

No es necesario realizar ninguna acción adicional. Sin embargo, si el error persiste, puedes proporcionar más detalles, incluidos los pasos para reproducir el error, publicando un tema de discusión en la categoría de comentarios del sitio.

Estoy ligeramente confundido: esto apunta a un problema del servidor, pero el resto de tus descripciones se refieren a problemas del lado del cliente.
El fallo en modo seguro implica problemas adicionales del lado del servidor.

¿Podrías hacer una captura de pantalla del error de “memoria insuficiente”?

Intenta visitar /logs. ¿Hay algo interesante allí?

¿Hay algo inusual en la configuración de tu base de datos?

Los mensajes de error.log pueden provenir de que volqué la caché del CDN y este realizó una extracción.

Todo funcionaba perfectamente horas antes. Inicialicé una nueva imagen cuando se lanzó la versión beta; había inicializado una imagen para incorporar las correcciones de los adornos de avatar de S3 CDN de Falco.

Acabo de inicializar una nueva imagen y la he puesto en línea.

Cuando escribes un solo carácter en el cuadro de respuesta, se congela.

Rastreo:

plugins/discourse-feature-voting/plugin.rb:165:in `reached_voting_limit?'
plugins/discourse-feature-voting/plugin.rb:178:in `votes_exceeded'
(eval):58:in `_fast_attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:468:in `rescue in attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:455:in `attributes'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:480:in `_serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:359:in `serializable_hash'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:347:in `as_json'
activesupport (6.0.3.3) lib/active_support/json/encoding.rb:22:in `encode'
activesupport (6.0.3.3) lib/active_support/json/encoding.rb:22:in `encode'
activesupport (6.0.3.3) lib/active_support/core_ext/object/json.rb:42:in `to_json'
active_model_serializers (0.8.4) lib/active_model/serializer.rb:331:in `to_json'
multi_json (1.15.0) lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json (1.15.0) lib/multi_json/adapters/oj.rb:56:in `dump'
multi_json (1.15.0) lib/multi_json/adapter.rb:25:in `dump'
multi_json (1.15.0) lib/multi_json.rb:139:in `dump'
app/controllers/application_controller.rb:571:in `preload_current_user_data'
app/controllers/application_controller.rb:382:in `preload_json'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:428:in `block in make_lambda'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:200:in `block (2 levels) in halting'
actionpack (6.0.3.3) lib/abstract_controller/callbacks.rb:34:in `block (2 levels) in <module:Callbacks>'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:201:in `block in halting'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:513:in `block in invoke_before'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:513:in `each'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:513:in `invoke_before'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:110:in `block in run_callbacks'
app/controllers/application_controller.rb:358:in `block in with_resolved_locale'
i18n (1.8.9) lib/i18n.rb:314:in `with_locale'
app/controllers/application_controller.rb:358:in `with_resolved_locale'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:139:in `run_callbacks'
actionpack (6.0.3.3) lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
activesupport (6.0.3.3) lib/active_support/notifications.rb:180:in `block in instrument'
activesupport (6.0.3.3) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (6.0.3.3) lib/active_support/notifications.rb:180:in `instrument'
actionpack (6.0.3.3) lib/action_controller/metal/instrumentation.rb:32:in `process_action'
actionpack (6.0.3.3) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
activerecord (6.0.3.3) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (6.0.3.3) lib/abstract_controller/base.rb:136:in `process'
actionview (6.0.3.3) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (2.3.1) lib/mini_profiler/profiling_methods.rb:111:in `block in profile_method'


actionpack (6.0.3.3) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (6.0.3.3) lib/action_controller/metal.rb:254:in `dispatch'
actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack (6.0.3.3) lib/action_dispatch/routing/mapper.rb:18:in `block in <class:Constraints>'
actionpack (6.0.3.3) lib/action_dispatch/routing/mapper.rb:48:in `serve'
actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:49:in `block in serve'
actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (6.0.3.3) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (6.0.3.3) lib/action_dispatch/routing/route_set.rb:834:in `call'
lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.3) lib/rack/conditional_get.rb:27:in `call'
rack (2.2.3) lib/rack/head.rb:12:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:355:in `call'
config/initializers/008-rack-cors.rb:25:in `call'
rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/cookies.rb:648:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (6.0.3.3) lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack (6.0.3.3) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster (2.9.5) lib/logster/middleware/reporter.rb:43:in `call'
railties (6.0.3.3) lib/rails/rack/logger.rb:37:in `call_app'
railties (6.0.3.3) lib/rails/rack/logger.rb:28:in `call'
config/initializers/100-quiet_logger.rb:23:in `call'
config/initializers/100-silence_logger.rb:31:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/request_id.rb:27:in `call'
lib/middleware/enforce_hostname.rb:23:in `call'
rack (2.2.3) lib/rack/method_override.rb:24:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.3) lib/rack/sendfile.rb:110:in `call'
actionpack (6.0.3.3) lib/action_dispatch/middleware/host_authorization.rb:76:in `call'
rack-mini-profiler (2.3.1) lib/mini_profiler/profiler.rb:373:in `call'


message_bus (3.3.4) lib/message_bus/rack/middleware.rb:61:in `call'
lib/middleware/request_tracker.rb:177:in `call'
railties (6.0.3.3) lib/rails/engine.rb:527:in `call'
railties (6.0.3.3) lib/rails/railtie.rb:190:in `public_send'
railties (6.0.3.3) lib/rails/railtie.rb:190:in `method_missing'
rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.3) lib/rack/urlmap.rb:58:in `each'
rack (2.2.3) lib/rack/urlmap.rb:58:in `call'
unicorn (5.8.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (5.8.0) lib/unicorn/http_server.rb:732:in `worker_loop'
unicorn (5.8.0) lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
unicorn (5.8.0) lib/unicorn/http_server.rb:144:in `start'
unicorn (5.8.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `load'
vendor/bundle/ruby/2.7.0/bin/unicorn:23:in `<main>'

El modo seguro parece funcionar ahora.

Vale, creo que lo he encontrado.

Hay un componente de tema que parece ser la causa.

He eliminado ese componente y ahora funciona como debería.

¿Has considerado mudarte a nuestro alojamiento? Así podríamos aliviarte parte de esta carga y tendrías un canal de soporte privado :slight_smile:

Lo hemos considerado, pero no creo que los costos de la opción alojada se compensen con los de autoalojamiento y autogestión.

El número de visitas mensuales y la cantidad de administradores/moderadores que tenemos nos colocaría en la categoría “Solicitar presupuesto”, en lugar de lo que pagamos actualmente por Bunny.net (CDN), Backblaze B2 y el servicio gratuito de DO (después de los créditos) para el droplet. Discourse realmente no es complicado de mantener; simplemente ha sido descuidado durante mucho tiempo porque fue configurado por alguien que ya no forma parte del equipo y no hubo una explicación real sobre por qué se hizo y qué se implementó. Probablemente sea momento de rehacer completamente toda la configuración ahora que tenemos las cosas organizadas en buckets.