Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add: 管理画面で特に負荷の大きい処理を無効にする環境変数 #633

Merged
merged 1 commit into from
Mar 5, 2024

Conversation

kmycode
Copy link
Owner

@kmycode kmycode commented Mar 5, 2024

これは本来セキュリティインシデントとして起票したものですが、確かに懸念はあるけど秘密裏にやるほど大それたものではないと感じましたので、通常のPRとして起票します。

/api/v1/admin/dimensions?keys=[servers]

これは、管理者向けダッシュボードでアクティブなサーバーを返すAPIです。
サーバーkmy.blueの場合、このAPI呼び出しから結果が返ってくるまで3分以上かかります。その間に発行されるSQLは1つだけ。AWSのCloudWatchで見ても、データベースディスクの負荷(IOPS)が3分間常にMAXまで張り付いており、繰り返し呼び出すとサーバーが落ちる可能性が高いと考えざるを得ません。例えば悪意を持った者がモデレーターに任命された場合など、モデレーターが気軽にサーバーを落とす/ありえない負荷をかける手段として有効です。

/api/v1/admin/measures?keys=[instance_users]

これは、既知のサーバーで特定インスタンスの全投稿数を返すAPIです。
サーバーkmy.blueの場合、それほど負荷ではありませんが、過去には10以上のインスタンス情報を同時表示しただけでデータベースが落ちたこともあり取り扱いには注意が必要なAPIです。

実際の画面において、これらのAPIは遅延的に処理され、呼び出しが完了しなくても次の操作を行うことが出来ます。なので、その遅延処理が高負荷であることに気づきにくく、サーバーを落としやすい要因といえます。
ただ本家Mastodonでは、kmy.blueより圧倒的に大規模なサーバーが大量にあるにかかわらず今までこの問題に対処されていないということは、この問題はkmyblue独自機能に起因する可能性もあるのではないかと思います。その問題の調査を行う前に、いったん当該APIを無効にできる環境変数を追加します。
この環境変数はデフォルトでtrueで、これは高負荷APIを正常に処理することを意味します。本来はデフォルトで無効にしたいのですが、お一人様サーバーなどでは特にインパクトはないと考えられるのと、本家Mastodonの挙動にあわせたものです。

@kmycode kmycode added bug Something isn't working enhancement New feature or request labels Mar 5, 2024
@kmycode kmycode added this to the kb11.next milestone Mar 5, 2024
@kmycode kmycode merged commit 0a3007a into kb_development Mar 5, 2024
44 checks passed
@kmycode kmycode deleted the kbtopic-add-admin-dashboard-load branch March 5, 2024 03:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant