Misskey: 連合へのリアクション送信に遅延を追加する

Created on 13 Apr 2020  ·  9Comments  ·  Source: syuilo/misskey

Summary

リアクションが連合されるようになった今、悪意のあるユーザーがリアクションを連打することにより、急速にキューが増えてしまいサーバーパフォーマンスの低下や相手インスタンスへの迷惑になるため。

  1. リアクションをつける
  2. ローカルではすぐ反映
  3. 5秒待つ(仮)

    1. 5秒の間にリアクションが変更やキャンセルされたら破棄する

    2. キャンセル、変更がない場合は送信キューに追加する

✨Feature 🌌Federation

Most helpful comment

投稿 / RN / リアクション の配信負荷は変わらないので、リアクションだけがダメってわけじゃなさそう

投稿 / RN には API Limitあるけど リアクションにはないので、リアクションAPIにLimitかければいいんじゃないかと。
https://github.com/syuilo/misskey/blob/11cc9cbc7caf5c03c5f30b722995b81fc160615e/src/server/api/endpoints/notes/create.ts#L32-L35

All 9 comments

リアクションの変更に関してはなん秒に一回程度で集め送信するようにするのも良さそうですね

最初リアクション作成→即座に配信
リアクションキャンセル・カウント追加→delayして配信

みたいな、、、

(手が滑ったとき誤ってつけたリアクションがリモートに長く見えるという問題もありますが、、、そこはしかたないかなぁっと)

投稿 / RN / リアクション の配信負荷は変わらないので、リアクションだけがダメってわけじゃなさそう

投稿 / RN には API Limitあるけど リアクションにはないので、リアクションAPIにLimitかければいいんじゃないかと。
https://github.com/syuilo/misskey/blob/11cc9cbc7caf5c03c5f30b722995b81fc160615e/src/server/api/endpoints/notes/create.ts#L32-L35

配信数はフォロワーのユニークインスタンス数になるから
あっちこっちにフォロワーがいる悪質ユーザーとかじゃなければあまり影響を与えられないので
フォロワーを集めて迷惑行為始めるのは結構ハードル高そう

相手インスタンスへの影響は、配信先インスタンスが100あっても、1つのインスタンスに対しては1個しか配信しないから、1つの相手に対する影響は微妙。

なので、APIがそんなに叩かれなければ対して送られないのではと。

フォロワーを集めて迷惑行為始めるのは結構ハードル高そう

悪意が無かったとしてもおもしろ半分でやる人も結構います(自分も過去にやったので)

実際に以前ジョブキューが急激に増えたのは面白半分で通常のユーザーが行ったものでありましたが、それに対して一々注意する手間もかかりますし、できる方がおかしいって言われてしまってはそれまでなので

5秒待つ(仮)
5秒の間にリアクションが変更やキャンセルされたら破棄する
キャンセル、変更がない場合は送信キューに追加する

サーバー/プロセス間で同期する手段がないのでたぶん無理

最初リアクション作成→即座に配信
リアクションキャンセル・カウント追加→delayして配信

なんかめんどくさそうなのと、他の投稿にどんどんリアクション付けられた場合に効かないので微妙(TLの上の投稿にフォーカスあてて 1↓1↓1↓…を連打するだけで簡単にできる)

「delayして送る」は結局配信する数は変わらないのでなんか微妙

また、単位時間あたりのジョブの処理数は元々制御できるし・・・と
https://github.com/syuilo/misskey/blob/11cc9cbc7caf5c03c5f30b722995b81fc160615e/.config/example.yml#L126-L128

サーバー/プロセス間で同期する手段がないのでたぶん無理

リアクションの処理を受け取ったサーバー側で実行するのでは駄目ですか?

これに関してはまた別の話ですが、Enterキー長押しでリアクション連打できるので、クライアント側の対策も必要な気がします。
(サードパーティはレートリミットで対応するしかない)

hcXCO4o4NG

リアクションの処理を受け取ったサーバー側で実行するのでは駄目ですか?

そのサーバーが別れているかもしれないのでキューを見ないといけない
キューは全部拾うしかないのですごくコスト高い

Enterキー長押しでリアクション連打できるので

修正されたはずだけどなんかできちゃう・・・
てゆうか連打したら他人のリアクション消えたんだけど・・・

てゆうか連打したら他人のリアクション消えたんだけど・・・

そういえば連打するとリアクションがどんどん消えていくバグもありますね

Was this page helpful?
0 / 5 - 0 ratings