Misskey: 投稿する度にMastodonから大量の取得リクエストが来る

Created on 18 Sep 2018  ·  4Comments  ·  Source: syuilo/misskey

Summary

Misskeyで投稿する度にMastodonから以下のURLへリクエストが飛んでくる

"GET /users/xxxxxxxxxxxxxxxxxxxxxxxx/publickey HTTP/1.1" 200 708 "-" "http.rb/3.2.0 (Mastodon/2.5.0; +https://mastodon.example.com/)"
"GET /users/xxxxxxxxxxxxxxxxxxxxxxxx/publickey HTTP/1.1" 200 708 "-" "http.rb/3.2.0 (Mastodon/2.5.0; +https://mastodon.example.com/)"
"GET /users/xxxxxxxxxxxxxxxxxxxxxxxx HTTP/1.1" 200 726 "-" "http.rb/3.2.0 (Mastodon/2.5.0; +https://mastodon.example.com/)"

Mastodon 1インスタンスの1フォロワーにつき
上の(publickey x 2 + user x1 = 3)個のリクエストが投稿する度に毎回飛んでくる

Mastodonインスタンス内のフォロワーが増えるに従ってリクエスト数も3ずつ増える

以下のパターンで起きる

  • Misskey→Mastodon に配信

以下のパターンでは起きない

  • Misskey→Misskey に配信
  • Mastodon→Mastodon に配信
  • Mastodon→Misskey に配信

相手のMastodonは、2.5.0 でも 1.6.1 でも起きることを確認

Expected Behavior

上記リクエストはさほどこない

Actual Behavior

投稿毎に大量に来る上に、同じ取得リクエストが同時に来る

Steps to Reproduce

  1. MastodonでMisskeyユーザーをフォローする
  2. Misskeyユーザーで投稿する
  3. Webサーバーのログ等を参照する

Environment

Misskey 8.54.0 から Mastodon 2.5.0 に配送した場合に確認
ほかのバージョンでも同様と思われる

どっちの問題かはわからない

🌌Federation

Most helpful comment

keyIdの形式の違いのせいっぽい

Mastodon: https://example.com/users/USER#main-key
Misskey: https://example.com/users/ID/publickey

Mastodonは keyId から Accout を取得する時に
keyIdの#以降を削除したもので該当があればそれを使用して、リクエストをなどを省略してそう。
https://github.com/tootsuite/mastodon/blob/56efc281895f4de19fd5ade241526fed454a7f8b/app/controllers/concerns/signature_verification.rb#L117-L118
https://github.com/tootsuite/mastodon/blob/56efc281895f4de19fd5ade241526fed454a7f8b/app/lib/activitypub/tag_manager.rb#L116

All 4 comments

keyIdの形式の違いのせいっぽい

Mastodon: https://example.com/users/USER#main-key
Misskey: https://example.com/users/ID/publickey

Mastodonは keyId から Accout を取得する時に
keyIdの#以降を削除したもので該当があればそれを使用して、リクエストをなどを省略してそう。
https://github.com/tootsuite/mastodon/blob/56efc281895f4de19fd5ade241526fed454a7f8b/app/controllers/concerns/signature_verification.rb#L117-L118
https://github.com/tootsuite/mastodon/blob/56efc281895f4de19fd5ade241526fed454a7f8b/app/lib/activitypub/tag_manager.rb#L116

sharedInboxが使用できないバグ #3711 修正後、だいぶリクエスト数が減っている模様

フォロワーの数だけ→インスタンスの数だけに減っている

Mastodon 1インスタンスの1フォロワーにつき
(publickey x 2 + user x1 = 3)個のリクエストが投稿する度に毎回飛んでくる

Mastodon 1インスタンスつき
(publickey x 2 + user x1 = 3)個のリクエストが投稿する度に毎回飛んでくる

上にあるように #3711 の修正後にリクエストは減っているのと
サンプルnginx configのとおりにキャッシュするだけでかなり負荷が減るはずなので
もうほぼ大丈夫かなとおもいます。
https://github.com/syuilo/misskey/blob/develop/docs/examples/misskey.nginx

来ること自体は変わってないし
たまにMastodon側の送信がスロットルされて配信が遅延するし

keyIdの形式の違いが原因の1つになる事例があったりするので
https://github.com/syuilo/misskey/issues/5715#issuecomment-574321766
https://github.com/syuilo/misskey/issues/5715#issuecomment-574333877

keyIdの形式を標準仕様ではないがデファクトになってる形式に寄せてしまおうかと検討
https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/

ざっと見た感じkeyIdの形式を変えても問題ないのではと思われる
MisskeyはkeyIdでUserテーブルを探索してるけど、そもそもこの処理いらないのでは説。

Was this page helpful?
0 / 5 - 0 ratings