Forgejo takes crawler-shaped external traffic on expensive blame and commit endpoints, peaking at 3x baseline #842
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#842
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Public Forgejo traffic is dominated by automated traversal of the most expensive read endpoints. It is absorbed fine today, but the pattern has no ceiling and there is nothing in front of it.
Evidence
All external traffic arrives through
svclb-traefikat10.42.0.167, which source-NATs it, so per-client attribution is not currently possible from the router log.Request volume through that path, 15 minute buckets on 2026-08-15:
Baseline sits around 4000 per 15 minutes, roughly 4.4 req/s. The peak is about 3x that.
Endpoint mix over one hour, out of 17,430 completed requests:
commit/in the path/blame/The access pattern walks
/blame/commit/<sha>/<file>,/src/commit/<sha>/<path>, and/commits/commit/<sha>/<path>across many repositories in rapid succession, including 404s and 301s on paths that do not exist. That is crawler behaviour, not human browsing.Forgejo is currently coping
Worth stating plainly so this is not treated as an outage. Zero of the 17,430 requests took a full second. Sampled durations were 1.7ms, 2.6ms, 28.5ms, 33.0ms, 42.8ms, 53.8ms, 129.2ms, and 622.3ms for a git push. The
giteaprocess was using 13.7% of one core.Why file it anyway
/blame/is one of the most expensive endpoints a git forge exposes, and it is being walked systematicallyOptions
robots.txtdisallowing/blame/,/commits/,/src/commit/, and/archive/on the public hostAcceptance
Expensive traversal endpoints are either rate limited or excluded from crawling, and the real client IP is visible in Forgejo's router log.