フォローは投稿を取得するから重めだけど、購読はハッシュタグTLと同じで連合TLから公開投稿を拾ってくるだけだからサーバに負担がかかりにくいイコール遅延起こりにくいんでしたっけ

@makihara えとね、ざっくり3ステップあるわけ。

最初にWebサーバが外部からの投稿データを受け取って、

1. ActivityPub::ProcessingWorker
2. DistributionWorker
3. FeedInsertWorker

という順序でワーカーが起動。

(1)は投稿データを解析して、投稿データとしてデータベースに記録+通知+(2)の起動

(2)はそれを全員共通のタイムラインに配送+(3)の起動

(3)はひとりひとりのタイムラインに配送

で、処理が詰まっている(順番待ちになっている)と、ひとりひとりのタイムラインに表示されるまでに3回待たないといけないのね。だから2倍も3倍も遅延するっていう。

購読とフォローはどちらも(3)で処理するから同じだよ。

ハッシュタグタイムラインは(2)で処理される。

内部の投稿は(1)の代わりに投稿APIの処理が走って、あと(2)以降は同じ。

@noellabo ありがとうございます 購読もフォローも3回順番待ちだから、待ち時間は一緒なんですね 

@makihara ですです。

なお、購読系機能と専用タイムラインの両方がある場合、

a. ハッシュタグフォロー(購読)
b. ハッシュタグタイムライン

a. ドメイン購読
b. ドメインタイムライン

ってことだけど、これは後者(b)の方が個別配送しないので待ち時間が短いです。

普段は使い勝手で考えればいいけど、詰まってる時は後者の方がサーバ負荷も軽いし使う人も有利。だいたいWebUIからじゃないと見えないけど。

@noellabo あー!!ハッシュタグやドメインの購読機能とTLとでどう違うのかよくわかってなかったんですけど、こういうことなんですね!前者(a)は3段階待ちで、後者(b)は2段目で処理

@makihara あとこれは本質なんですが、

ホームやリストというのは、800件とか1,200件、投稿を蓄えておく入れ物です。溢れると消える。

ハッシュタグ、ドメイン、ローカル、連合などは、全員共通なので配送が1回っていうこともあるけど、一時的な入れ物じゃなくて、配送されなくても最初から最後まで全部入っているということが決定的に違います。

フォロー

@noellabo ホームやリストはアカウントごとに投稿を配って置いておく場所(3段目)で、その前の全員共通のタイムライン(2段目)を見に行けばすべての投稿が見られるんですね だいぶ違うんだなあ

ログインして会話に参加
Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。