启用组件时的问题,也许是右侧边栏块?

我遇到了一些错误,您见过这些错误并知道解决方案吗?我以为是 Windows 内存问题,但即使 Windows 中有 6GB 可用内存,问题仍然存在。

返回主题时

转到主题时:

这些错误是间歇性的,但发生得相当频繁 :frowning:

感谢任何建议。值得注意的是,如果我重试,它们通常会成功……另外,/logs 中没有任何关于此的信息。

请注意,我还添加了精选图块,但如果我禁用右侧边栏块,问题就会消失。我有 11GB 可用内存和充足的磁盘空间。

如果我禁用精选图块并启用右侧边栏块,问题仍然存在。

1 个赞

我和你有一样的错误,但我不知道该怎么修复,尽管我在这里发帖了 :joy: :joy: :joy:

但愿有人能想到办法 :cry:

我会在浏览器控制台中查找错误。

我收到了 1100 行,这里是其中的一部分:

2 deprecation-identify-source.js:15 DEPRECATION:具有单独解析模板的组件已弃用。迁移到共置的 js/ts + hbs 文件或 gjs/gts。尝试查找 ‘template:components/top-contributors’。[deprecation id: component-template-resolving] 这将在 ember-source 6.0.0 中删除。请参阅 Component Template Resolving | Ember.js - Deprecations

post.js:561 :white_check_mark: 使用新的“glimmer”帖子菜单!
2deprecation-identify-source.js:15 DEPRECATION:具有单独解析模板的组件已弃用。迁移到共置的 js/ts + hbs 文件或 gjs/gts。尝试查找 ‘template:components/top-contributors’。[deprecation id: component-template-resolving] 这将在 ember-source 6.0.0 中删除。请参阅 Component Template Resolving | Ember.js - Deprecations

POST https://discourse.xxxxxx.xxx/mini-profiler-resources/results 429 (Too Many Requests)

:information_source: Discourse v3.4.0.beta4-dev — Commits · discourse/discourse · GitHub — Ember v5.12.0
deprecation-identify-source.js:15 DEPRECATION:具有单独解析模板的组件已弃用。迁移到共置的 js/ts + hbs 文件或 gjs/gts。尝试查找 ‘template:components/whos-online’。[deprecation id: component-template-resolving] 这将在 ember-source 6.0.0 中删除。有关更多详细信息,请参阅 Ember.js - Deprecations

这可能是原因。在这种情况下,您可能受到了速率限制。
如果启用了右侧边栏块,您可以在开发者控制台的网络选项卡中进行检查,看看是否有更多请求。

1 个赞

有一个问题,如果有人知道的话:

(1)我是管理员,信任等级为 4,为什么“DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL”没有让我绕过任何速率限制?

全局每 IP 速率限制
这些限制适用于访问 Discourse 应用程序的每个唯一 IP 地址。(直接从文件系统或 CDN 提供的文件除外)

默认情况下,此速率限制已启用,您可以禁用它或将其设置为报告模式。

DISCOURSE_MAX_REQS_PER_IP_MODE:默认阻止,此速率限制开箱即用。(其他选项是警告、警告+阻止和无)

DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE:每分钟每个 IP 的请求数(默认为 200)

DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS:每 10 秒每个 IP 的请求数(默认为 50)

DISCOURSE_MAX_ASSET_REQS_PER_IP_PER_10_SECONDS:每 10 秒每个 IP 的资源(头像/CSS)请求数(默认为 200)

DISCOURSE_MAX_REQS_RATE_LIMIT_ON_PRIVATE:速率限制是否适用于访问 Discourse 的专用 IP?默认为 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”到“Right Sidebar Blocks”。

我会汇报结果,谢谢。

我打赌你是对的,那么在 /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_req_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,仍然收到此问题。

我删除了 Right Sidebar Blocks,问题就消失了 :frowning: 非常烦人!

并不是说我没有遇到 Top Contributers Sidebar 的问题。

如果您使用固定 IP 地址,您可以将您的 IP 地址排除在速率限制之外:

作为初步测试,您可以完全跳过速率限制(只需不使用 web.ratelimited.template.yml

您可以通过浏览 nginx 日志来查找请求的来源:

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