Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app.go
diff options
context:
space:
mode:
authorJaime Martinez <jmartinez@gitlab.com>2021-12-01 03:34:58 +0300
committerJaime Martinez <jmartinez@gitlab.com>2021-12-01 03:34:58 +0300
commitd228c13c76d11091f8514e40940dc7df1b633e5a (patch)
tree866eb85df7764f775494d9f8a4db6792e022eed0 /app.go
parente3c2565e7086a38f02dd5175e51dde187ce5457f (diff)
parent17c333c2a8de78c08dd070431652cc844fcc7b57 (diff)
Merge branch 'refactor/limiter-new' into 'master'
refactor: make internal/lru and internal/ratelimiter metrics optional Closes #647 See merge request gitlab-org/gitlab-pages!606
Diffstat (limited to 'app.go')
-rw-r--r--app.go12
1 files changed, 9 insertions, 3 deletions
diff --git a/app.go b/app.go
index 3f286033..18513f0d 100644
--- a/app.go
+++ b/app.go
@@ -31,6 +31,7 @@ import (
"gitlab.com/gitlab-org/gitlab-pages/internal/handlers"
"gitlab.com/gitlab-org/gitlab-pages/internal/httperrors"
"gitlab.com/gitlab-org/gitlab-pages/internal/logging"
+ "gitlab.com/gitlab-org/gitlab-pages/internal/lru"
"gitlab.com/gitlab-org/gitlab-pages/internal/netutil"
"gitlab.com/gitlab-org/gitlab-pages/internal/ratelimiter"
"gitlab.com/gitlab-org/gitlab-pages/internal/rejectmethods"
@@ -266,9 +267,14 @@ func (a *theApp) buildHandlerPipeline() (http.Handler, error) {
if a.config.RateLimit.SourceIPLimitPerSecond > 0 {
rl := ratelimiter.New(
- metrics.RateLimitSourceIPBlockedCount,
- metrics.RateLimitSourceIPCachedEntries,
- metrics.RateLimitSourceIPCacheRequests,
+ lru.New("source_ip",
+ // based on an avg ~4,000 unique IPs per minute
+ // https://log.gprd.gitlab.net/app/lens#/edit/f7110d00-2013-11ec-8c8e-ed83b5469915?_g=h@e78830b
+ lru.WithMaxSize(5000),
+ lru.WithCachedEntriesMetric(metrics.RateLimitSourceIPCachedEntries),
+ lru.WithCachedRequestsMetric(metrics.RateLimitSourceIPCacheRequests),
+ ),
+ ratelimiter.WithBlockedCountMetric(metrics.RateLimitSourceIPBlockedCount),
ratelimiter.WithSourceIPLimitPerSecond(a.config.RateLimit.SourceIPLimitPerSecond),
ratelimiter.WithSourceIPBurstSize(a.config.RateLimit.SourceIPBurst),
)