Compare commits

...

2 Commits

Author SHA1 Message Date
Simon Zolin
781f011419 * call debug.FreeOSMemory() once in 5 minutes 2020-09-04 14:23:51 +03:00
Simon Zolin
45745943a5 + config: add setting "mem_gc_percentage" 2020-09-04 10:25:15 +03:00
3 changed files with 13 additions and 1 deletions

View File

@@ -47,6 +47,12 @@ type configuration struct {
RlimitNoFile uint `yaml:"rlimit_nofile"` // Maximum number of opened fd's per process (0: default)
DebugPProf bool `yaml:"debug_pprof"` // Enable pprof HTTP server on port 6060
// The value for SetGCPercent.
// SetGCPercent sets the garbage collection target percentage:
// a collection is triggered when the ratio of freshly allocated data
// to live data remaining after the previous collection reaches this percentage.
MemGCPercent uint8 `yaml:"mem_gc_percentage"`
// TTL for a web session (in hours)
// An active session is automatically refreshed once a day.
WebSessionTTLHours uint32 `yaml:"web_session_ttl"`

View File

@@ -13,6 +13,7 @@ import (
"os/signal"
"path/filepath"
"runtime"
"runtime/debug"
"strconv"
"sync"
"syscall"
@@ -209,6 +210,11 @@ func run(args options) {
log.Info("Configuration file is OK")
os.Exit(0)
}
if config.MemGCPercent != 0 {
debug.SetGCPercent(int(config.MemGCPercent))
log.Debug("Set SetGCPercent=%d", config.MemGCPercent)
}
}
// 'clients' module uses 'dnsfilter' module's static data (dnsfilter.BlockedSvcKnown()),

View File

@@ -40,7 +40,7 @@ func memoryUsage() {
// periodically call "debug.FreeOSMemory" so
// that the OS could reclaim the free memory
go func() {
ticker := time.NewTicker(15 * time.Second)
ticker := time.NewTicker(5 * time.Minute)
for {
select {
case t := <-ticker.C: