-
-
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
backend: ワーカープロセスでもリクエストを捌けるようにする #13662
Comments
あまり効果がないという話があったわね |
実際、WSL2上でMisskeyバックエンドを動かし(+DockerにDBとRedis)、1ミリ秒間隔でnotes/createを叩くツールを90ほど並列で動作させたときに明確な差が出ました。 |
(もっと性能的な制約が厳しいVMとかレンサバとかだとどうなるかも見てみたい) |
データベースのデータ量が増えてくると、Nodeではなくデータベースがネックになるから効果出ないか、むしろ余計にメモリ消費して逆効果になることがあるわね |
リクエスト量が多いかつデータベースの負荷がそこまで高くないシチュエーションが実際どれくらいあるかわからないけどその場合は効果が期待できそう |
CPU1コア、メモリ2GBの環境にdocker-composeでアプリ、DB、Redisを詰め込んで、その状態で
↑をやったらどうなるかの結果次第ですかね。 |
(systemdか何かでMisskeyのプロセスを複数立ち上げて運用されている方もいるとどこかで見た記憶があり…そのようなシチュエーションで役に立つかも…?) |
ちなみにこれ、どこで言及されたか覚えてらっしゃいますか…? |
この辺も解決できるかもしれない |
リソースが固定な1つのマシンで使うという前提の場合、 |
たしかに。
これはonlyQueueとonlyServerのオプションで実現できそうで、
これのうち、そこそこの規模のインスタンスに良さそうなオプションを提供できるか考えるのがこのissueの立ち位置になりそうな感じがしてきました。 |
(これ、どっかの通信面でボトルネックがあるみたいな話じゃなかったっけ?) |
(自分で試してた限りではnodeとdb/redisの間にあると思われるdockerのproxyが悲鳴を上げてた) |
Summary
タイトルの通りです。
現状、マシンリソースに余裕があるからとワーカープロセスを増やしても、処理速度が上がるのはjobQueueのみであり、主機能のアプリケーション本体部分にはあまり恩恵が無く1、ちょっともったいない感じになってしまっていると思います。
Purpose
リクエスト数の多いサーバで処理速度向上が見込める
Do you want to implement this feature yourself?
Footnotes
Misskeyのバックエンドは、メインプロセスのほかにclusterモジュールを使用してワーカープロセスを立ち上げる造りになっており、メインプロセスではリクエスト→処理→レスポンスの流れを、ワーカープロセスではjobQueueの処理をそれぞれ担っています。 ↩
The text was updated successfully, but these errors were encountered: