Проблемы при включении компонента, возможно, блоки правой боковой панели?

Я получаю некоторые ошибки. Вы сталкивались с ними и знаете какое-либо решение? Я думал, что это проблема с памятью в Windows, но она всё равно возникает, даже если у меня свободно 6 ГБ в Windows.

При возврате к теме:

При переходе к теме:

Эти ошибки возникают периодически, но довольно часто :frowning:

Спасибо за любую помощь. Обратите внимание: если я попробую снова, они обычно проходят… Также в /logs об этом ничего нет.

Отмечу, что я также добавил плитки «Избранное», но если отключить блоки правой боковой панели, проблема исчезает. У меня свободно 11 ГБ памяти и достаточно места на диске.

Если я отключу плитки «Избранное» и включу блоки правой боковой панели, проблема сохраняется.

У меня такая же ошибка, как у вас, но я не знаю, как её исправить, хотя и опубликовал это здесь :joy: :joy: :joy:

Надеемся, у кого-нибудь есть идея :cry:

Я бы поискал ошибки в консоли браузера.

Я получил обратно 1100 строк, вот некоторые из них:

2 deprecation-identify-source.js:15 ПРЕДУПРЕЖДЕНИЕ О УСТАРЕВАНИИ: Компоненты с отдельно разрешаемыми шаблонами устарели. Мигрируйте либо на совместное размещение файлов js/ts и hbs, либо на gjs/gts. Попытка поиска ‘template:components/top-contributors’. [id предупреждения: component-template-resolving] Это будет удалено в ember-source 6.0.0. См. https://deprecations.emberjs.com/id/component-template-resolving

post.js:561 :white_check_mark: Используется новое меню постов ‘glimmer’!
2 deprecation-identify-source.js:15 ПРЕДУПРЕЖДЕНИЕ О УСТАРЕВАНИИ: Компоненты с отдельно разрешаемыми шаблонами устарели. Мигрируйте либо на совместное размещение файлов js/ts и hbs, либо на gjs/gts. Попытка поиска ‘template:components/top-contributors’. [id предупреждения: component-template-resolving] Это будет удалено в ember-source 6.0.0. См. https://deprecations.emberjs.com/id/component-template-resolving

POST https://discourse.xxxxxx.xxx/mini-profiler-resources/results 429 (Слишком много запросов)

:information_source: Discourse v3.4.0.beta4-dev — https://github.com/discourse/discourse/commits/380910aedd — Ember v5.12.0
deprecation-identify-source.js:15 ПРЕДУПРЕЖДЕНИЕ О УСТАРЕВАНИИ: Компоненты с отдельно разрешаемыми шаблонами устарели. Мигрируйте либо на совместное размещение файлов js/ts и hbs, либо на gjs/gts. Попытка поиска ‘template:components/whos-online’. [id предупреждения: component-template-resolving] Это будет удалено в ember-source 6.0.0. См. https://deprecations.emberjs.com/id/component-template-resolving для получения дополнительной информации.

Это может быть причиной. В таком случае, скорее всего, вы достигли лимита запросов.
Вы можете проверить вкладку «Сеть» в консоли разработчика, если при включённых блоках правой боковой панели выполняется больше запросов.

Один вопрос, если кто-то знает:

(1) Я администратор, уровень доверия 4, так почему же “DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL” не обходит для меня любые ограничения скорости?

Глобальные ограничения скорости на IP-адрес
Эти ограничения применяются к каждому уникальному IP-адресу, обращающемуся к приложению Discourse. (Файлы, предоставляемые напрямую из файловой системы или CDN, исключаются)

По умолчанию это ограничение скорости включено; вы можете отключить его или установить режим отчётности.

DISCOURSE_MAX_REQS_PER_IP_MODE: по умолчанию block, это ограничение скорости применяется сразу после установки. (Другие варианты: warn, warn+block и none)

DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE: количество запросов с IP-адреса в минуту (по умолчанию 200)

DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS: количество запросов с IP-адреса за 10 секунд (по умолчанию 50)

DISCOURSE_MAX_ASSET_REQS_PER_IP_PER_10_SECONDS: количество запросов ресурсов (аватары/CSS) с IP-адреса за 10 секунд (по умолчанию 200)

DISCOURSE_MAX_REQS_RATE_LIMIT_ON_PRIVATE: должно ли ограничение скорости применяться к частным IP-адресам, обращающимся к Discourse? По умолчанию false.

DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL: использовать ограничения скорости на уровне пользователя вместо ограничений на IP-адрес для пользователей с этим уровнем доверия или выше (по умолчанию 1)

Чтобы изменить ограничения, добавьте желаемые изменения в файл app.yml в секции env.

Я могу попробовать:

DISCOURSE_MAX_REQS_PER_IP_MODE: warn
DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE: 600
DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS: 200
DISCOURSE_MAX_ASSET_REQS_PER_IP_PER_10_SECONDS: 400
DISCOURSE_MAX_REQS_RATE_LIMIT_ON_PRIVATE: false
DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL: 2

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

Даже с учётом описанных выше изменений и после пересборки приложения я вижу предупреждение о лимите запросов в консоли браузера, если включены блоки правой боковой панели.

Как можно вывести или иным образом определить фактическое значение, например, переменной DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL?

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

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

Если вы хотите проверить гипотезу о том, что вы сталкиваетесь с лимитами на уровне nginx, вы можете закомментировать следующую строку в вашем файле app.yml:

- templates/web.ratelimited.template.yml

У меня не установлены ограничения скорости в nginx, который я использую как обратный прокси, и я попробую то, что вы предложили, чтобы посмотреть, что делает контейнер.

Я загружаю Leaderboard, Top Producers и Events в блоки правой боковой панели.

Я отпишусь, спасибо.

Я уверен, что вы правы, так какие же хорошие, но более мягкие значения для этих настроек в /var/discourse/templates/web.ratelimited.template.yml? Это просто метод проб и ошибок?

params:
reqs_per_second: 12
burst_per_second: 12
reqs_per_minute: 200
burst_per_minute: 100
conn_per_ip: 20

run:

  • replace:
    filename: “/etc/nginx/conf.d/discourse.conf”
    from: /server.+{/
    to: |
    limit_req_zone $binary_remote_addr zone=flood:10m rate=$reqs_per_secondr/s;
    limit_req_zone $binary_remote_addr zone=bot:10m rate=$reqs_per_minuter/m;
    limit_req_status 429;
    limit_conn_zone $binary_remote_addr zone=connperip:10m;
    limit_conn_status 429;

Я увеличил это до:

reqs_per_second: 18
burst_per_second: 18
reqs_per_minute: 400
burst_per_minute: 200
conn_per_ip: 20

Все еще получаю «429 Too Many Requests».

Я удалил Leaderboard, но проблема осталась.

Я удалил блоки правой боковой панели, и проблема исчезла :frowning: Очень раздражает!

Хотя у меня нет этой проблемы с боковой панелью Top Contributors.

Если вы работаете с фиксированным IP-адресом, вы можете исключить свой IP из ограничения скорости:

Для первого теста я бы полностью отключил ограничение скорости (просто не используйте web.ratelimited.template.yml)

Вы можете найти источник запросов, просмотрев логи nginx:

./launcher enter app
less /var/log/nginx/access.log