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ずつ増える
以下のパターンで起きる
以下のパターンでは起きない
相手のMastodonは、2.5.0 でも 1.6.1 でも起きることを確認
上記リクエストはさほどこない
投稿毎に大量に来る上に、同じ取得リクエストが同時に来る
Misskey 8.54.0 から Mastodon 2.5.0 に配送した場合に確認
ほかのバージョンでも同様と思われる
どっちの問題かはわからない
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テーブルを探索してるけど、そもそもこの処理いらないのでは説。
Most helpful comment
keyIdの形式の違いのせいっぽい
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