diff options
author | Jaime Martinez <jmartinez@gitlab.com> | 2021-12-01 03:34:58 +0300 |
---|---|---|
committer | Jaime Martinez <jmartinez@gitlab.com> | 2021-12-01 03:34:58 +0300 |
commit | d228c13c76d11091f8514e40940dc7df1b633e5a (patch) | |
tree | 866eb85df7764f775494d9f8a4db6792e022eed0 /app.go | |
parent | e3c2565e7086a38f02dd5175e51dde187ce5457f (diff) | |
parent | 17c333c2a8de78c08dd070431652cc844fcc7b57 (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.go | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -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), ) |