Load: a flood of fake servers; unique-key lookups no longer scan
tools/pasture/flood/flood.cs answers as twenty fake servers (flood1..20.test) and sends signed Creates, Likes and Follows at a set rate; load.sh measures the answers, the queue's wait and processing times, its drain and a persona's home timeline meanwhile (docs/LOAD.md has the method and the runs). What the runs found: - Every unique index was partial on $type: "string", which MongoDB never uses for an equality lookup, so every post by ObjectURI, actor by ActorURI, deleted object, domain block, remote instance and the rest was a collection scan (280 ms a post lookup at 30 000 posts). They are partial on $gt: "" now, which an equality on a string implies; MongoDB.Entities rebuilds them in place at the next start. - Two inbox workers capped intake near 110 activities a second: Federation:InboxConcurrency and DeliveryConcurrency (default 8) set them. - The indexes the plan listed as missing: a post's boosts and replies, a persona's boosts, who follows an actor, timeline rows by author, a post's likes and pins. At 300 activities a second (200 let through, the rest 429 by the per-origin limit) the queue wait went from 29 s to 6 ms at p50; with the limits lifted PrivaPub processes about 900 a second, each in under 10 ms, and the home timeline stays under 20 ms. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LsXgEaXee4GCU1hwYgPJXw
This commit is contained in:
1 parent
f1e743c331
commit
eeb873b816
12 files changed
+497
-17
No files matched your search
@@ -72,6 +72,10 @@ Written 2026-10-01 from the original 2023 code, the decePubClient UI, a federati
|
||||
- groups run from the client (2026-10-05): `/clientapi/group/members` shows a group's members and requests to its owner
|
||||
and moderators only, `reject` declines a request and `remove` takes a member out (a `Reject{Follow}` to a member
|
||||
elsewhere); decePubClient's Groups page makes, joins, edits and runs them.
|
||||
- load (S10, 2026-10-05): the `flood` peer and `load.sh` (`docs/LOAD.md`). The first runs found every lookup by a
|
||||
unique key scanning its collection (the partial indexes were `$type: "string"`, which MongoDB never uses for an
|
||||
equality) and two inbox workers capping intake at about 110 activities a second; fixed, with the missing indexes,
|
||||
PrivaPub processes about 900 a second here, each in under 10 ms.
|
||||
- wave 2, under way: PieFed, Mbin, NodeBB and Lemmy 0.19 in the pasture with scenarios (2026-10-05). What they showed and was fixed: the
|
||||
instance actor answers at the server's root, where PieFed looks for the inbox it announces to; a community's removal
|
||||
of a post on its own server is believed at once; a followed group's post its own server sends without announcing
|
||||
|
||||
Reference in new issue
Block a user