-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
NoteCreateService.postNoteCreated()をワーカープロセスで動かせるオプションの追加 #15052
Comments
APIのリクエストを捌くのはそもそもワーカープロセスだったような? |
「メインプロセス」「ワーカープロセス」がそれぞれ何を指しているのかの認識が合っていないかもしれない |
あー。おさむ語である可能性が無きにしも非ず… 自分は メインプロセス:↓こっちで起動されるほう(node ./built/boot/entry.jsで起動されたプロセスと同一の認識) misskey/packages/backend/src/boot/entry.ts Lines 71 to 77 in d55e638
ワーカープロセス:↓こっちで起動される方 misskey/packages/backend/src/boot/entry.ts Lines 79 to 81 in d55e638
の認識でいました |
合ってた
そんなことなかった |
APIリクエストを捌くの自体をワーカープロセスに移動した方が良い可能性がある可能性がある |
related to #13662 |
↑をサポートしたとしても、postNoteCreated()を切り離すこと自体は有用であると考えています。 |
ほむん |
Summary
ノートそのものを作成した後に呼び出される、通知やTLへのpushなどを行う諸処理が実装されたpostNoteCreated()なる関数があります。この関数は多くの機能を持ち、それに応じて負荷も高いです。
現在は以下のようにsetImmediate()を活用して早くレスポンス出来るようにされています。…が、メインプロセスで処理されるのは変わりないので、負荷を落とせるわけではありません。
misskey/packages/backend/src/core/NoteCreateService.ts
Lines 397 to 400 in aa48a0e
そこで、setImmediate()の代わりとしてジョブキューに要求を追加し、ワーカープロセス側でpostNoteCreated()の処理を行う方式を提案したいです(わりと大きく仕組みが変わるので、最初はexperimental的オプションとして提供したい)
実際に、10ms間隔でノートを作成するスクリプトを動かして試したところ、以下のような結果が見えてきました。
※処理速度が落ち始める=テスト用のスクリプトに帰ってくるリクエスト・レスポンスの間隔が開き、リクエストのペースが落ち始める
もちろん、ワーカープロセスの負荷が増すのでサーバによっては不向きな機能かもしれませんが(故にオプション)、メインプロセスが他のリクエストにパワーを回せるようになるので有用な選択肢かと思いました。
Purpose
Do you want to implement this feature yourself?
The text was updated successfully, but these errors were encountered: