Request limits #33
Merged
fauno
merged 5 commits from 2026-11-08 14:36:10 +00:00
request-limits into main
Labels
Clear labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Breaking change that won't be backward compatible
Something is not working
Documentation changes
Improve existing functionality
New functionality
This is security issue
Issue or pull request related to testing
Priority
Critical
1
The priority is critical
Priority
High
2
The priority is high
Priority
Medium
3
The priority is medium
Priority
Low
4
The priority is low
Reviewed
Confirmed
1
Issue has been confirmed
Reviewed
Duplicate
2
This issue or pull request already exists
Reviewed
Help wanted
3
Reviewed
Invalid
3
Invalid issue
Reviewed
Won't Fix
3
This issue won't be fixed
Status
Blocked
1
Something is blocking this issue or pull request
Status
Need More Info
2
Feedback is required to reproduce issue or to continue work
Status
Abandoned
3
Somebody has started to work on this but abandoned work
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Assignees
3wordchant
aadil (Aadil Ayub)
abra-bot (Abra Bot)
ammaratef45
amras (Sarma)
Apfelwurm
appletalk
arjan
basebuilder
BornDeleuze (Born Deleuze)
Brooke
carla
cas (Cassowary)
codegod100
coopcloud
cyrnel
dannygroenewegen (Danny Groenewegen)
decentral1se (d1)
dede
devydave
fauno (fauno)
flancian
Frando
hex (Josh Dukes)
iexos
jade (Jade Ambrose)
javielico (Javielico)
jjsfunhouse
jmakdah2 (Jackie Makdah)
joe-irving (Joe Irving)
kawaiipunk (KawaiiPunk)
knoflook
kolaente
lambdabundesverband
linnealovespie (April)
marlon (marlon)
mayel
mirsal
moosemower
moritz
nicksellen (Nick Sellen)
notplants
oxaliq (sorrel)
p4u1 (p4u1)
pau
pharaohgraphy (Andrew 🐦🔥❤️🔥✴️)
PhiNatalie
renovate-bot (Comrade Renovate Bot)
ripclap
rix
rscmbbng
sef (sef)
simon
sixsmith (Sixsmith)
stevensting (stevensting)
tobias
trav (Trav Fryer)
val (val (he/him))
vaznasty
virtualboys
wolcen (Chris Thompson)
wykwit
xynosis
yksflip
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: coop-cloud/garage#33
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
@Brooke i'm considering setting rate limits following block_max_concurrent_reads and block_max_concurrent_writes_per_request because we've been seeing a lot of 504 gateway timeout errors on relatively high load (higher than normal anyway), but setting it to 16 was too low and now we have a lot of 429 errors. i'm not sure what the average should be yet and if they're related to the two options i mentioned. also i don't know if the concurrent reads are per hdd or per node.
if garage follows the s3 spec for multipart uploads, the max body size should be 5GiB
adding them as options to .env sounds like a good idea. I generally feel like it is ill advised to set an unlimited max body size. Under the known issue page they seem to address this by saying there isn't currently a max? Unless I'm reading this wrong should we also set a standard block size? https://garagehq.deuxfleurs.fr/documentation/reference-manual/known-issues/
do you mean this? https://garagehq.deuxfleurs.fr/documentation/reference-manual/known-issues/#very-big-objects-cause-performance-degradation
i read it as that they support any stored object size but the upload should be multipart. according to s3 docs anything bigger than 100MB should be uploaded as multipart, but chunks can range from 5MB to 5GB.
ok i looked around different clients and the garage source code and i think 5GiB as an upper limit is enough, and it could also start at 5MiB but it depends on users' needs.
just for documenting this somewhere. i'm not sure it can be achieved with traefik rate limits, and the 3 concurrent writes per node seems two low for a gateway, maybe it can be concurrent writes * nodes, and the same for reads.
this comes from observing a some 504 gateway errors while doing backups, which sometimes the backup software doesn't understand to retry, and a friend doing a proper load test where errors were measured. garage is the source of the 504 error. come to think of it i should first investigate in which cases it returns this error.
since our gateways are nginx not deployed by coopcloud, i was trying to set rate limits but apparently it's impossible to set a rate limit dynamically by
request_methodwithout a commercial subscription.this would work with a commercial subscription:
this doesn't work because the zone parameter doesn't expand variables:
this doesn't work because
limit_reqis not allowed within anifcontext:This makes sense, I was reading that known issues page incorrectly
If this pull is limited to the traefik middleware it seems fine, but I would put the upload limits before the "for more" line in README.md as it's meant to be the last line. Not blocking.