Componentを有効化すると問題発生、Right Sidebar Blocksかも?

エラーが発生しています。これらのエラーを見たことがありますか、また解決策をご存知ですか?Windowsのメモリの問題かと思いましたが、Windowsで6GBの空き容量があっても発生します。

トピックから戻ったとき

トピックに移動したとき:

これらのエラーは断続的ですが、かなり頻繁に発生します:frowning:

何か情報があればよろしくお願いします。再試行すると通常は成功しますが…また、/logsには何も記載されていません。

Featured Tilesを追加しましたが、Right Sidebar Blocksを無効にすると問題は解消します。メモリは11GB空いており、ディスク容量も十分です。

Featured Tilesを無効にしてRight Sidebar Blocksを有効にすると、問題は継続します。

「いいね!」 1

私も同じエラーが出ていますが、どうやって修正すればいいのか分かりません。ここに投稿したのに :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 で削除されます。詳細は Component Template Resolving | Ember.js - Deprecations を参照してください。

post.js:561 :white_check_mark: 新しい「glimmer」投稿メニューを使用しています!
2deprecation-identify-source.js:15 非推奨: 別個に解決されたテンプレートを持つコンポーネントは非推奨です。共置された js/ts + hbs ファイル、または gjs/gts に移行してください。‘template:components/top-contributors’ を検索しようとしました。[非推奨 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 非推奨: 別個に解決されたテンプレートを持つコンポーネントは非推奨です。共置された js/ts + hbs ファイル、または gjs/gts に移行してください。‘template:components/whos-online’ を検索しようとしました。[非推奨 ID: component-template-resolving] これは ember-source 6.0.0 で削除されます。詳細は Component Template Resolving | Ember.js - Deprecations を参照してください。

これが原因かもしれません。この場合、おそらくレート制限されています。
右側のサイドバーブロックが有効になっているときに、開発者コンソールのネットワークタブを確認すると、さらに多くのリクエストがあるかもしれません。

「いいね!」 1

質問が1つあります。もしご存知の方がいらっしゃれば:

(1)私は管理者(トラストレベル4)ですが、なぜ「DISCOURSE_SKIP_PER_IP_RATE_LIMIT_TRUST_LEVEL」がレート制限のバイパスにならないのでしょうか?

グローバルIPごとのレート制限
これらの制限は、DiscourseアプリケーションにアクセスするすべてのユニークなIPアドレスに適用されます。(ファイルシステムまたはCDNから直接提供されるファイルは除外されます)

デフォルトでは、このレート制限は有効になっています。無効にするか、レポートモードに設定することができます。

DISCOURSE_MAX_REQS_PER_IP_MODE:デフォルトはブロック。このレート制限はすぐに適用されます。(その他のオプションは、warn、warn+block、noneです)

DISCOURSE_MAX_REQS_PER_IP_PER_MINUTE:IPあたりの1分あたりのリクエスト数(デフォルトは200)

DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS:IPあたりの10秒あたりのリクエスト数(デフォルトは50)

DISCOURSE_MAX_ASSET_REQS_PER_IP_PER_10_SECONDS:IPあたりのアセット(アバター/CSS)リクエストの10秒あたりの数(デフォルトは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 の実際の値をエコーまたは判別するにはどうすればよいですか?

また、右サイドバーブロックを無効にすると、右サイドバーブロックを有効にした場合と同じレートでトピックを移動しても、ブラウザコンソールにレート制限の警告は表示されません。

レート制限に関する過去の議論を検索することをお勧めします。
このトピックについては詳しくありませんが、私の理解では、レート制限は2段階で適用されます。まず、nginxがレート制限を行い(信頼レベルは認識しません)、次にRailsアプリが別の保護レイヤーを適用します。

nginxレイヤー内でレート制限に遭遇するという仮説をテストしたい場合は、app.ymlの次の行をコメントアウトできます。

- templates/web.ratelimited.template.yml

リバースプロキシとして使用しているnginxにレート制限は設定していません。コンテナが何をしているか確認するために、ご提案いただいたことを試してみます。

ライトサイドバーブロックにリーダーボード、トッププロデューサー、イベントをロードしています。

また報告します。ありがとうございます。

おそらく正しいのでしょう。では、/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」が表示されます。

リーダーボードを削除しましたが、問題は発生します。

ライトサイドバーブロックを削除すると、問題はなくなりました :frowning: とても迷惑です!

トップコントリビューターサイドバーでこの問題が発生しないわけではありません。

固定IPアドレスから作業している場合は、IPアドレスをレート制限から除外できます。

最初のテストとしては、レート制限を完全にスキップすることをお勧めします(web.ratelimited.template.ymlを使用しないだけです)。

nginxのログをブラウズすることで、リクエストの発生源を見つけることができるかもしれません。

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