Сообщения в чате не отображаются, пока не обновить страницу или не переключить канал

Мой инстанс имеет очень низкую нагрузку, менее 1000 просмотров страниц в день (без учёта краулеров).

Однако уже при открытии главной страницы форума, без каких-либо действий, я получаю как минимум один ответ 429, иногда два или три, и это происходит ещё до того, как я что-либо нажимаю.

Поиск здесь, на meta, дал единственную тему, но она касается сайтов с высокой нагрузкой и не объясняет, что происходит в моём случае.

Мой инстанс установлен с помощью официального установщика, но с использованием подпапки. Я думал, что проблема может быть в неправильной настройке передачи реальных IP-адресов пользователей от моего обратного прокси-сервера к NGINX, но, насколько я могу судить, IP-адреса передаются корректно (я могу углубиться в эту проверку, если это всё ещё считается возможным причиной проблемы).

Само по себе это не вызывало бы у меня особой тревоги, но иногда у меня возникают проблемы в чате: когда я редактирую сообщение в чате, обновлённый контент не отображается сразу, и я задаюсь вопросом, не связано ли это с ошибками 429.

Буду признателен за любые рекомендации по диагностике этой проблемы, любые предложения будут приняты с благодарностью!

Спасибо!

Прежде чем искать проблему в другом месте, я бы исключил проблему с IP.

Вы проверяли указанные IP-адреса на активных учетных записях пользователей?

Используете ли вы CloudFlare в качестве прокси?

Привет, Стивен, спасибо, что нашли время ответить!

Я проверил IP-адреса, указанные в активных учётных записях, и все они, включая мой, кажутся верными. IP-адреса других пользователей различаются между собой и все они из разных регионов моей страны (Бразилии), что и ожидалось. Я подумывал проверить базу данных и логи, но воздержался, так как этот тест указывает на то, что проблема может быть не в этом.

Я не использую CloudFlare в качестве прокси, но использовал его ранее — я ещё раз проверил, что файл templates/cloudflare.template.yml закомментирован.

Теперь, глядя на мой app.yml, я вижу, что templates/web.ratelimited.template.yml также закомментирован… Интересно, имеет ли смысл включить его, чтобы избежать ограничения скорости? :thinking: Это же не имеет смысла, верно? :smiling_face_with_tear:

Тело ответа 429: «Вы выполнили это действие слишком много раз. Пожалуйста, подождите 2 минуты перед повторной попыткой».

1 лайк

Я всё ещё получаю эти сообщения. Теперь я понимаю, что проблема в Discourse, а не в Nginx, поэтому я попытался установить DISCOURSE_REJECT_MESSAGE_BUS_QUEUE_SECONDS: 0.2 (по умолчанию 0.1), как упоминалось в других темах, связанных с ошибкой 429 от Message Bus, но ничего не изменилось. Буду благодарен, если кто-то укажет, какие переменные окружения могут ослабить это ограничение.

Также я вижу эту ошибку в консоли.

Я бы не слишком беспокоился об этих проблемах, настоящая проблема в том, что сообщения чата не отображаются, пока я не обновлю страницу или не переключу канал: если я перейду из личного чата в другой, а затем вернусь обратно, только тогда я смогу увидеть новые сообщения.

1 лайк

Как мы только что обсуждали, это вызвано накоплением запросов Unicorn. @renato скорректирует количество процессов Unicorn и сообщит о результатах.

Это действительно плохо. То, что должно происходить, — это автоматическое восстановление чата после периода отката и получение всех сообщений с момента последнего успешного опроса. Вы этого не видите? Если так, то это серьезная ошибка.

2 лайка

Спасибо!

Да, я этого не наблюдал, возможно, дело в чём-то другом, я не уверен. Я вижу зелёную точку, указывающую на новое сообщение, но само сообщение не отображается. Затем, когда я переключаю каналы, я вижу новые сообщения, и зелёная точка уведомления исчезает.

Я сейчас пересобираю систему с дополнительными воркерами и продолжу тестирование. Если это продолжится, я постараюсь собрать как можно больше деталей и сообщу об этом.

1 лайк

@Falco Отчитываюсь: в консоли и вкладках сети по-прежнему вижу 429.

Также могу воспроизвести проблему, когда окно чата не обновляется, даже при переписке с самим собой: если я отправляю сообщение, оно появляется, но элементы управления при наведении отсутствуют. Если переключиться на другой чат и вернуться обратно, я могу отредактировать отправленное сообщение, но для того чтобы увидеть изменения, мне нужно покинуть чат и вернуться в него.

2 лайка

Я сейчас занимаюсь масштабным рефакторингом множества компонентов, связанных с сетью и живыми обновлениями. Ожидаю, что объединю изменения где-то на следующей неделе. Это может значительно улучшить вашу проблему (если только она не связана с чем-то совершенно другим).

7 лайков

Кажется, рефакторинг был слит на этой неделе. Заметили ли вы какие-либо улучшения, @renato?

2 лайка

Похоже, у нас та же проблема. Многие активные пользователи чата сообщают, что не видят сообщения, отправленные другими, а только свои собственные, пока не обновят страницу. Есть ли какое-либо решение для этого — либо через фронтенд в панели управления, либо через SSH?