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
120 lines
1.8 KiB
Caddyfile
120 lines
1.8 KiB
Caddyfile
{
|
|
local_certs
|
|
skip_install_trust
|
|
}
|
|
|
|
privapub.test {
|
|
tls internal
|
|
reverse_proxy pasture-privapub:80
|
|
}
|
|
|
|
gts.test {
|
|
tls internal
|
|
reverse_proxy pasture-gts:80
|
|
}
|
|
|
|
mastodon.test {
|
|
tls internal
|
|
reverse_proxy pasture-mastodon:3000
|
|
}
|
|
|
|
misskey.test {
|
|
tls internal
|
|
reverse_proxy pasture-misskey:3000
|
|
}
|
|
|
|
sharkey.test {
|
|
tls internal
|
|
reverse_proxy pasture-sharkey:3000
|
|
}
|
|
|
|
lemmy.test {
|
|
tls internal
|
|
reverse_proxy pasture-lemmy:8536
|
|
}
|
|
|
|
akkoma.test {
|
|
tls internal
|
|
reverse_proxy pasture-akkoma:4000
|
|
}
|
|
|
|
decepub.test {
|
|
tls internal
|
|
reverse_proxy pasture-decepub:80
|
|
}
|
|
|
|
hollo.test {
|
|
tls internal
|
|
reverse_proxy pasture-hollo:3000
|
|
}
|
|
|
|
iceshrimp.test {
|
|
tls internal
|
|
reverse_proxy pasture-iceshrimp:3000
|
|
}
|
|
|
|
pleroma.test {
|
|
tls internal
|
|
reverse_proxy pasture-pleroma:4000
|
|
}
|
|
|
|
peertube.test {
|
|
tls internal
|
|
reverse_proxy pasture-peertube:9000
|
|
}
|
|
|
|
pixelfed.test {
|
|
tls internal
|
|
reverse_proxy pasture-pixelfed:8080
|
|
}
|
|
|
|
wordpress.test {
|
|
tls internal
|
|
reverse_proxy pasture-wordpress:80
|
|
}
|
|
|
|
friendica.test {
|
|
tls internal
|
|
reverse_proxy pasture-friendica:80
|
|
}
|
|
|
|
mobilizon.test {
|
|
tls internal
|
|
reverse_proxy pasture-mobilizon:4000
|
|
}
|
|
|
|
gancio.test {
|
|
tls internal
|
|
reverse_proxy pasture-gancio:13120
|
|
}
|
|
|
|
funkwhale.test {
|
|
tls internal
|
|
reverse_proxy pasture-funkwhale:80
|
|
}
|
|
|
|
piefed.test {
|
|
tls internal
|
|
reverse_proxy pasture-piefed:5000
|
|
}
|
|
|
|
mbin.test {
|
|
tls internal
|
|
reverse_proxy pasture-mbin:80
|
|
}
|
|
|
|
nodebb.test {
|
|
tls internal
|
|
reverse_proxy pasture-nodebb:4567
|
|
}
|
|
|
|
lemmy19.test {
|
|
tls internal
|
|
reverse_proxy pasture-lemmy19:8536
|
|
}
|
|
|
|
flood1.test, flood2.test, flood3.test, flood4.test, flood5.test, flood6.test, flood7.test, flood8.test, flood9.test, flood10.test, flood11.test, flood12.test, flood13.test, flood14.test, flood15.test, flood16.test, flood17.test, flood18.test, flood19.test, flood20.test {
|
|
tls internal
|
|
reverse_proxy pasture-flood:8080
|
|
}
|