add limiterRefreshInterval option for limiter

This commit is contained in:
ginuerzh
2024-11-14 20:16:09 +08:00
parent 3db20563d2
commit 79b6b9138e
78 changed files with 679 additions and 227 deletions
+2 -6
View File
@@ -88,7 +88,7 @@ func (h *httpHandler) Init(md md.Metadata) error {
}
if limiter := h.options.Limiter; limiter != nil {
h.limiter = limiter_util.NewCachedTrafficLimiter(limiter, 30*time.Second, 60*time.Second)
h.limiter = limiter_util.NewCachedTrafficLimiter(limiter, h.md.limiterRefreshInterval, 60*time.Second)
}
for _, ro := range h.options.Recorders {
@@ -949,11 +949,7 @@ func (h *httpHandler) observeStats(ctx context.Context) {
return
}
d := h.md.observePeriod
if d < time.Millisecond {
d = 5 * time.Second
}
ticker := time.NewTicker(d)
ticker := time.NewTicker(h.md.observePeriod)
defer ticker.Stop()
for {
+26 -11
View File
@@ -20,16 +20,17 @@ const (
)
type metadata struct {
readTimeout time.Duration
keepalive bool
compression bool
probeResistance *probeResistance
enableUDP bool
header http.Header
hash string
authBasicRealm string
observePeriod time.Duration
proxyAgent string
readTimeout time.Duration
keepalive bool
compression bool
probeResistance *probeResistance
enableUDP bool
header http.Header
hash string
authBasicRealm string
proxyAgent string
observePeriod time.Duration
limiterRefreshInterval time.Duration
sniffing bool
sniffingTimeout time.Duration
@@ -72,7 +73,21 @@ func (h *httpHandler) parseMetadata(md mdata.Metadata) error {
h.md.hash = mdutil.GetString(md, "hash")
h.md.authBasicRealm = mdutil.GetString(md, "authBasicRealm")
h.md.observePeriod = mdutil.GetDuration(md, "observePeriod")
h.md.observePeriod = mdutil.GetDuration(md, "observePeriod", "observer.observePeriod")
if h.md.observePeriod == 0 {
h.md.observePeriod = 5 * time.Second
}
if h.md.observePeriod < time.Second {
h.md.observePeriod = time.Second
}
h.md.limiterRefreshInterval = mdutil.GetDuration(md, "limiter.refreshInterval")
if h.md.limiterRefreshInterval == 0 {
h.md.limiterRefreshInterval = 30 * time.Second
}
if h.md.limiterRefreshInterval < time.Second {
h.md.limiterRefreshInterval = time.Second
}
h.md.proxyAgent = mdutil.GetString(md, "http.proxyAgent", "proxyAgent")
if h.md.proxyAgent == "" {