Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
これは本来セキュリティインシデントとして起票したものですが、確かに懸念はあるけど秘密裏にやるほど大それたものではないと感じましたので、通常のPRとして起票します。
これは、管理者向けダッシュボードでアクティブなサーバーを返すAPIです。
サーバーkmy.blueの場合、このAPI呼び出しから結果が返ってくるまで3分以上かかります。その間に発行されるSQLは1つだけ。AWSのCloudWatchで見ても、データベースディスクの負荷(IOPS)が3分間常にMAXまで張り付いており、繰り返し呼び出すとサーバーが落ちる可能性が高いと考えざるを得ません。例えば悪意を持った者がモデレーターに任命された場合など、モデレーターが気軽にサーバーを落とす/ありえない負荷をかける手段として有効です。
これは、既知のサーバーで特定インスタンスの全投稿数を返すAPIです。
サーバーkmy.blueの場合、それほど負荷ではありませんが、過去には10以上のインスタンス情報を同時表示しただけでデータベースが落ちたこともあり取り扱いには注意が必要なAPIです。
実際の画面において、これらのAPIは遅延的に処理され、呼び出しが完了しなくても次の操作を行うことが出来ます。なので、その遅延処理が高負荷であることに気づきにくく、サーバーを落としやすい要因といえます。
ただ本家Mastodonでは、kmy.blueより圧倒的に大規模なサーバーが大量にあるにかかわらず今までこの問題に対処されていないということは、この問題はkmyblue独自機能に起因する可能性もあるのではないかと思います。その問題の調査を行う前に、いったん当該APIを無効にできる環境変数を追加します。
この環境変数はデフォルトで
true
で、これは高負荷APIを正常に処理することを意味します。本来はデフォルトで無効にしたいのですが、お一人様サーバーなどでは特にインパクトはないと考えられるのと、本家Mastodonの挙動にあわせたものです。