Open tamaina opened 1 year ago
1workerにつきどれくらいメモリ消費するんだろう
プロセス分離するとメモリ内キャッシュ(ユーザー情報とか)がそれぞれのプロセスごとに作られることになるから逆に非効率になる部分が出るというデメリットはありそう
ワーカーが増えることによるメモリ使用量の増加 + キャッシュが分離されることによるメモリ使用量増加とキャッシュヒット率低下 が安定性の向上に見合うコストかどうか 安定性っていうのが何を指してるのかよくわからないけど
Node.jsにプロセス間通信以外の方法でワーカー間で特定の値を共有する仕組みとかないよね
文字列しか共有できないみたいだから使えなさそう
安定性 = 仮にキューワーカーがビジーになってもサーバーワーカーは元気なので応答はできる
ビジーというのはCPUについてかしら キューの処理そんなにCPU使うかな
FoundKeyの実装は各ワーカーの数を調整できるしメモリがカツカツならそこで調整しちゃえばとも思う
1つのワーカーでことを済ませたいという要望があるなら、これまで通り1つのワーカーですべて処理するようにするオプションを設定することもできそう
私のサーバーはActivityPubのキューをたくさん処理している
(Forkbombを想定してたけどあれ検索攻撃だとキュー関係ないわ
たぶんめいすきー起因のやつだと思うのだわ https://gist.github.com/mei23/e9ea9b8504bd0ac490ad256259f47715
キューの処理そんなにCPU使うかな
deliverでバーストするので、そのタイミングでserver側のユーザー体験に少しは影響を与えている可能性はあるのだわ。
プロセス分離するとメモリ内キャッシュ(ユーザー情報とか)がそれぞれのプロセスごとに作られることになるから逆に非効率になる部分が出るというデメリットはありそう
あーよく考えたらQueueProcessorService内でキャッシュ参照する箇所ってない可能性あるな(布団なので未確認)
やるか
ChartManagementServiceは分離できない
個人的な欲求
マスタープロセスがワーカーを作らず全部のことをやるとか
コードいじる必要はあるけどdisableClusteringで行けるのか(こう言うIssueがあった気がするけどどっかいった)
Summary
ServerServiceとQueueProcessorService(とChartManagementService)のworkerを分離すれば安定性が増す?
仮にキューワーカーがビジーになってもサーバーワーカーは元気なので応答はできる
(FoundKeyが実装してたので) https://akkoma.dev/FoundKeyGang/FoundKey/commit/2dde8273e2c6ade955223054de49ff36ada59a30