dschaper
(Dan Schaper)
19.Февраль.2021 10:35:04
1
В версии 2.7.0beta4 11f28e3eb3
При вводе ответа браузер клиента зависает, а в консоли разработчика отображается ошибка Out Of Memory в Ember-jquery.
Я отключил Presence, скрыл предпросмотр, создал новый образ web_only и запустил новый контейнер. Ошибки остались прежними.
Использую CDN как для загрузки файлов в S3, так и для статического контента. Кэш на CDN был очищен.
Также вижу множество записей в error.log следующего вида:
Feb 19 02:27:42 discourse error.log 2021/02/19 10:27:42 [alert] 677#677: 768 worker_connections are not enough
Johani
(Joe)
19.Февраль.2021 10:40:42
2
Возникает ли проблема, если вы попробуете безопасный режим?
your.site.com/safe-mode
dschaper
(Dan Schaper)
19.Февраль.2021 10:41:54
3
Безопасный режим, все флажки отмечены — выводит страницу «Упс»:
Упс
Программное обеспечение, управляющее этим форумом обсуждений, столкнулось с непредвиденной проблемой. Приносим извинения за неудобства.
Подробная информация об ошибке была записана в журнал, и было автоматически сгенерировано уведомление. Мы займемся этим вопросом.
Дальнейших действий с вашей стороны не требуется. Однако, если ошибка сохраняется, вы можете предоставить дополнительные сведения, включая шаги для воспроизведения ошибки, создав тему в категории обратной связи на сайте.
riking
(Kane York)
19.Февраль.2021 10:49:29
4
dschaper:
Сообщения в error.log
Я немного запутался — это указывает на проблему на стороне сервера, но остальная часть ваших описаний касается проблем на стороне клиента.
Сбой в безопасном режиме подразумевает дополнительные проблемы на стороне сервера.
Можете ли вы сделать скриншот ошибки «недостаточно памяти»?
Попробуйте перейти по адресу /logs. Есть ли там что-то интересное?
Есть ли что-то необычное в настройках вашей базы данных?
dschaper
(Dan Schaper)
19.Февраль.2021 10:58:57
5
Сообщения в error.log могут быть связаны с тем, что я очистил кэш CDN, и он выполнил обновление.
Несколько часов назад всё работало отлично. Когда вышла бета-версия, я развернул новый образ. Ранее я уже развернул образ для применения исправлений, связанных с аватарами и флагами S3 CDN, от Falco.
Я только что развернул новый образ и загрузил его.
При вводе одного символа в поле ответа система зависает.
Трассировка стека:
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>'
dschaper
(Dan Schaper)
19.Февраль.2021 11:00:15
6
Режим безопасной загрузки, похоже, теперь работает.
dschaper
(Dan Schaper)
19.Февраль.2021 11:13:52
7
Кажется, я нашёл причину.
Виновником, судя по всему, является компонент темы.
Discourse theme component for automatically adding <abbr> to abbreviations and acronyms
Я удалил этот компонент, и теперь всё работает как положено.
Вы рассматривали возможность перехода на наш хостинг? Тогда мы могли бы взять на себя часть этой работы, и у вас появится отдельный канал поддержки
dschaper
(Dan Schaper)
22.Февраль.2021 17:57:27
9
Мы это обдумали, но я не считаю, что расходы на хостинг окупаются за счёт экономии на самостоятельном размещении и поддержке.
Количество просмотров страниц в месяц и число администраторов/модераторов у нас попадает в категорию «Запросить расчёт», а не соответствует тому, что мы сейчас платим за Bunny.net (CDN), Backblaze B2 и бесплатные ресурсы от DigitalOcean (после использования кредитов) для droplet. Discourse не требует больших усилий в обслуживании, просто он долгое время был заброшен: его настроил человек, который больше не входит в команду, и не было чёткого объяснения, почему и что именно было сделано. Вероятно, сейчас самое время полностью пересобрать всю инфраструктуру, особенно теперь, когда у нас всё хранится в бакетах.