misskey icon indicating copy to clipboard operation
misskey copied to clipboard

ダイレクトはジョブキューで優先的に処理できるようにする

Open kakkokari-gtyih opened this issue 1 year ago • 20 comments

Summary

ダイレクトのInbox/Deliverジョブを割り込みで優先的に処理できるようにする(これはオプションで有効・無効を切り替えられたほうがいいかも)

Purpose

あけおめ投稿で同時書き込みが大量に出てキューにWaitingが積もるような状態であっても、個人間の会話になるべく支障をきたさないようにするため

Related to #12467 (チャットとしてDMを再編成するとなると、この部分のUXが重要になる)

Do you want to implement this feature yourself?

  • [ ] Yes, I will implement this by myself and send a pull request

kakkokari-gtyih avatar Dec 31 '23 16:12 kakkokari-gtyih

memo: https://docs.bullmq.io/guide/jobs/prioritized

tamaina avatar Dec 31 '23 17:12 tamaina

ん、違う、普通にLIFOさせればいいのか

https://docs.bullmq.io/guide/jobs/lifo

tamaina avatar Dec 31 '23 17:12 tamaina

それ割り込みの処理では…(単に別レーンで処理するのではだめなのかなと)

kakkokari-gtyih avatar Dec 31 '23 17:12 kakkokari-gtyih

サーバーリソース的には結局割り込みと同じ意味になるので、単純明快に割り込みとしてマークすればいいんじゃないかしら?

tamaina avatar Dec 31 '23 17:12 tamaina

サーバーリソース的には結局割り込みと同じ意味になるので、単純明快に割り込みとしてマークすればいいんじゃないかしら?

それでもいいかも

マルチコアなら並列処理を…とかを考えたりした (Nodeは基本シングルスレッドなので無理かも)

kakkokari-gtyih avatar Dec 31 '23 17:12 kakkokari-gtyih

基本的な話、Misskeyはワーカーで並列処理できるようになってて、それらにjobを割り振るためにBullMQを使っている

tamaina avatar Dec 31 '23 17:12 tamaina

なら割り込みでいいな

kakkokari-gtyih avatar Dec 31 '23 17:12 kakkokari-gtyih

逆にダイレクトが詰まったら大変なことになりそう…?

kakkokari-gtyih avatar Dec 31 '23 17:12 kakkokari-gtyih

逆にダイレクトが詰まったら大変なことになりそう…?

まあでもそのための処理だからいいのか

kakkokari-gtyih avatar Dec 31 '23 17:12 kakkokari-gtyih

いや、スパムがDM送りまくったら大変なことになるぞ

tamaina avatar Dec 31 '23 17:12 tamaina

#12871 と同様にロールで割当できるようにしておいて、コンディショナルロールである程度登録から時間がたった人に対してダイレクトの優先配送を使えるようにすればまだマシかな

kakkokari-gtyih avatar Dec 31 '23 17:12 kakkokari-gtyih

そもそものスパム対策として1アカウントが1秒1件しか送れないとかの制限を付けたい感じはある

tamaina avatar Dec 31 '23 17:12 tamaina

そもそものスパム対策として1アカウントが1秒1件しか送れないとかの制限を付けたい感じはある

APIのレートリミット側かしらそれをやるなら

kakkokari-gtyih avatar Dec 31 '23 17:12 kakkokari-gtyih

notes/createでごっちゃなのでAPIのレートリミットとは別に仕組む必要はあると思う

tamaina avatar Dec 31 '23 17:12 tamaina

(時間制限を設けた場合は1分/秒間に何件DM送れるかはロールで設定可能にしたい)

tamaina avatar Dec 31 '23 17:12 tamaina

(時間制限を設けた場合は1分/秒間に何件DM送れるかはロールで設定可能にしたい)

それ別で異臭立てたほうがいいかもしれ

kakkokari-gtyih avatar Dec 31 '23 17:12 kakkokari-gtyih

notes/createって300 notes/hなんだ 意外と少なかった

tamaina avatar Dec 31 '23 17:12 tamaina

notes/createが厳しめなのでDMで別に仕組む必要はないかも(APIリミット緩和でOK)

(よく考えたらフォロワーがたくさんいるユーザーが大量に投稿する方がサーバーリソース的にはきつい)

tamaina avatar Dec 31 '23 17:12 tamaina

気が変わった

「非優先/1対多 = フォロワー向けのノート/リアクション配送」と「優先/1対1 = ダイレクト・リプライ先・フォロー承認」を分けてキューに保持したい感じがしてきた

tamaina avatar Jan 04 '24 10:01 tamaina

非優先/1対多 = フォロワー向けのノート/リアクション配送

投票されて更新を配送する時もめっちゃ負荷が高い

tamaina avatar Feb 18 '24 15:02 tamaina