もし俺がアカウントを消したら、おそらくだけど俺が所属しているFedibirdが30以上のサーバに「genbuchan、死す」って伝えて存在を抹消することになるし
もしフォロー / フォロワー数が山ほどいるアカウントが死んだら、それこそ100とか200とか下手し1000以上のサーバに大きな負担をかけることになるかもしれない
もし俺がアカウントを消したら、おそらくだけど俺が所属しているFedibirdが30以上のサーバに「genbuchan、死す」って伝えて存在を抹消することになるし
もしフォロー / フォロワー数が山ほどいるアカウントが死んだら、それこそ100とか200とか下手し1000以上のサーバに大きな負担をかけることになるかもしれない
@genbuchan 参考までに正確にお伝えすると、Fedibirdは9,322のサーバを知っていて、そのうちの4,755のサーバを配送可能な相手と認識している。
まずはgenbuchanのフォロワーのいるサーバに優先的に削除を依頼する。平均的には、まあせいぜい数十ぐらいだね。
あと、リレーに配送するので、リレーに参加している200ぐらいのサーバ。
んで、残りのサーバにも投げる。優先順位の低いキューを使うけど、こちらの負荷軽減であって、相手の負荷軽減とは関係ない。
結局4755+α(リレーからつながる未知の相手)のサーバに削除依頼を出す。フォロワーがいなくても、fetchしたりして投稿やアカウントを認識していることがあるから、全部に投げるのだ。
まあいくつかのサーバはつながらなかったりするけども。
@noellabo うおおおおお……想像してなかったぐらいの規模で削除要請を出すんですね…
リレー先にまで要請を出すのは知りませんでした、参考になります!
@genbuchan ローカルサーバでの削除処理、リモートへの削除の配送処理、あとリモートからこちらへの逆参照(アカウント情報確かめに来たりする)が、ローカルサーバの負荷になる。
ローカルサーバでの削除処理は、投稿の削除の他に、フォローとか絵文字リアクションとか、そのアカウントが関わったあらゆるアクティビティを取り消すことになるので、そこが重い。主にデータベースに負荷がかかる。
リモートへの削除の配送は、たとえばFedibirdの例でいうと4700ぐらい一気にキューが積み上がるので、これを捌ききるまで他のキューの処理が遅延したりして、重い!って実感したりするね。
逆参照は、サーバ内のキャッシュシステムやnginxなどのリバースプロキシ、cloudflareなどの外部キャッシュサーバがカバーしてくれれば大して影響ないけど、モロにうけたらこれもとんでもない負荷になる。
リモートサーバでは、連合先に配送したりする必要はないし、データ量も相対的に少ないから、まあさほとでもない。だいたい、既に最適化されている。
@noellabo そうなんですね〜
意外と所属している方のサーバにかかる負担が大きすぎるのは初めて知りました…
@genbuchan あと、Mastodonは意外と頑張ってる(削除負荷をできるだけ軽くしてある)と思いますが、MisskeyやPleromaがどこまで最適化されているか……ですね。
senooken JP Social is a social network, courtesy of senooken. It runs on GNU social, version 2.0.2-beta0, available under the GNU Affero General Public License.
All senooken JP Social content and data are available under the Creative Commons Attribution 3.0 license.